gpt4 book ai didi

c - 在表格中移动一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:47 25 4
gpt4 key购买 nike

我刚开始学习编程语言,我想移动表格中的一个字符(点“*”)。

这是我的代码

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main() {
int v;
int x = 50, y = 10;
int i, j;
char screen[80][25];

// declare and initialize table
for (i = 0; i < 80; i++)
for (j = 0; j < 25; j++)
screen[i][j] = ' ';

// coordinate system
for (i = 0; i < 80; i++) screen[i][12] = '-';
for (j = 0; j < 25; j++) screen[40][j] = '|';

// point, position
screen[x][y] = '*';

// print result
for (j = 0; j < 25; j++) {
for (i = 0; i < 80; i++)
printf("%c", screen[i][j]);
printf("\n");
}
}

这将打印一个大小为 80x25 的表格和一个中心位于 (40,12) 的坐标系。我将字符“*”的位置设置在坐标 (x,y) 上。我将 x 和 y 定义为 50 和 10。

现在我想通过改变 x 和 y 来移动我的星星。如何更改 x 和 y(星星的位置)?也许有 scanf 功能?我试着像这样使用 scanf:

int v;
...
scanf("%d", &v);
if(v == 1)
{
y--;
}

但随后一切(表格、坐标系和角色)都消失了。请帮忙。

谢谢。

最佳答案

看看使用[n]curses(3) .

如果您使用的是 *nix 或 OS X,应该已经安装好了。如果您使用的是 Windows,则可以获得 PdCurses 的分发版在

但是,从设计的角度来看,您应该将您的模型(一个 80 x 25 阵列)与用户界面分开。你有两个任务:

  1. 通过响应用户事件来维护模型。
  2. 通过响应模型中的更改来维护用户界面。

这会将您引向一个名为模型- View - Controller MVC设计模式。在经典 MVC 中,您有:

  • 一个模型,本质上是一个没有用户界面的 headless 应用程序。
  • View ,用户界面。在你的例子中,你有一个控制台/终端窗口作为输出,一个键盘作为输入,对吧?
  • Controller 。 Controller 的工作是将 View 连接到模型。 Controller 将事件(例如按键或输入一行文本等输入事件)中继到模型。模型响应事件做出适当的 react ,并在其视觉状态发生变化时通知 Controller 。反过来, Controller 通过指示 View (或 View 的所需部分)其状态已更改来做出响应,以便它可以重新呈现自己。

这种关注点分离使得(除其他外)从一开始就更容易编写和测试代码。

关于c - 在表格中移动一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com