【问题标题】:Refreshing console value without system("cls");刷新没有系统的控制台值(“cls”);
【发布时间】:2015-04-15 20:51:27
【问题描述】:

我正在尝试用 C 语言编写 Snake,但目前我刚刚编写了一个可变长度和宽度矩阵。由于我希望游戏(所以地图)不断刷新,我尝试以这种方式编写代码,但“刷新效果”不太好看到。我能做什么?

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>

int main()
{
    int larghezza = 0, altezza = 0, i = 0, j = 0, **griglia;

    printf("Inserire la larghezza della mappa(max 79):");
    while(scanf("%d", &larghezza) == 1) /* Inserimento larghezza */
    {
        if(larghezza >= 15 && larghezza <= 79)
        {
            break;
        }
        else
        {
            printf("Numero di larghezza non valido.\n");
            continue;
        }
    }

    printf("Inserire l'altezza della matrice:");
    while(scanf("%d", &altezza) == 1) /* Inserimento altezza */
    {
        if(altezza >= 15 && altezza <= 79)
        {
            break;
        }
        else
        {
            printf("Numero di altezza non valido.\n");
            continue;
        }
    }

    griglia = malloc(altezza * sizeof(int*));  /* griglia si estende solo in larghezza */
    for(i = 0; i < altezza; i++)
    {
        griglia[i] = malloc(larghezza * sizeof(int)); /* poi ogni elemento "i" di griglia */
    }                                               /*avrà una lunghezza pari ad "altezza" */

    for(i = 0; i < altezza; i++) /* Inizializza la matrice griglia */
    {
        for(j = 0; j < larghezza; j++)
        {
            griglia[i][j]= 254;
        }
    }

    while(1) /* refresh infinito mappa */
    {
        for(i = 0; i < altezza; i++)
        {
            for(j = 0; j < larghezza; j++)
            {
                printf("%c", griglia[i][j]);
            } /* end for colonne */
            printf("\n");
        } /*end for righe */
        Sleep(100);
        system("cls");
    }/* end while di refresh */

【问题讨论】:

  • 只更新“使用”snake 的空间和空白空间。

标签: c console refresh


【解决方案1】:

您可以只清除蛇的最后位置。

我会清除蛇尾的最后一个字符。这样刷新问题就会停止,您只需控制蛇的大小和位置(无论如何您都需要这样做)。

干杯,

莱斯利

【讨论】:

  • 我需要哪些仪器?因为我是 C 编程新手,我只知道循环、向量和其他一些小知识。
  • Granpasso,您需要一个库来为您绘制它。您可以尝试 ncurses en.wikipedia.org/wiki/Ncurses 。干杯
  • 也许,来自conio.hgotoxy 也有助于这种情况。如果是这样,请留下ncurses 以备将来使用:-)
猜你喜欢
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 2014-07-18
相关资源
最近更新 更多