gpt4 book ai didi

c - 如何在终端自动执行代码

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

所以我用 C 语言构建了这个非常简单的游戏,你是一艘船,需要避免子弹从屏幕上升起。一旦我在终端中运行它,每次我想移动船时,我都会输入(左)s(直线)或 d(右)。我想知道是否有一种方法可以在每次移动后不强制使用 enter 键,而是让子弹逐渐像每秒一个空格或自动的那样上升。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <assert.h>
#define height 20
#define width 15

int main (int argc, char *argv[]) {
printf("Beginning Game\n");
printf("Press 's' to start\n");
char move = 0;
int count = 6;
int turn = 0;
int row = 0;
int col = 0;
int left = 0;
int right = 14;
srand(time(NULL));
int shootcol = rand() % (width - 3) + 2 ;
int shootrow = height + 1;
int shoot2col = rand() % (width - 3) + 2 ;
int shoot2row = height + 15;



while (move != 'e') {
printf("\n");
scanf(" %c", &move);
if (move == 's') {
turn++;
}
else if (move == 'a') {
count--;
turn++;

} else if (move == 'd') {
count++;
turn++;

}
row = 0;
col = 0;
printf("TURN: %d\n", turn);
while (row < height) {
while (col < width) {
//printf("%d", col );
if (((row == shootrow) && (col == shootcol)) || ((row == shoot2row) && (col == shoot2col))) {
printf(":");


} else if (col == left) {

printf("|");


} else if (col == right) {
printf("|");

} else if (row < 5) {
printf(" ");

} else if (row == 5) {

if (col < count) {
printf(" ");
} else if (col == count) {
printf("|");

} else if (col == count + 1) {
printf("-");

} else if (col == count + 2) {
printf("|");

} else if (col >= count + 3) {
printf(" ");
}
} else if (row == 6) {

if (col < count) {
printf(" ");
} else if (col == count) {
printf("\\");

} else if (col == count + 1) {
printf(" ");

} else if (col == count + 2) {
printf("/");

} else if (col >= count + 3) {
printf(" ");
}

} else {
printf(" ");

}
col++;

}
col = 0;
printf("\n");
row++;

}
shootrow--;
shoot2row--;
if ((count == left) || (count == right - 2)) {
printf("YOU LOSE!!\n");
move = 'e';
} else if ((shootrow == 5) || (shootrow == 4)) {
if ((count == shootcol) || (count == shootcol - 2 ) || (count == shootcol - 1)) {
printf("YOU LOSE!!\n");
move = 'e';
} if ((count == shoot2col) || (count == shoot2col - 2 ) || (count == shoot2col - 1)) {
printf("YOU LOSE!!\n");
move = 'e';
}

} if (shootrow <= 0) {
shootrow = height - 1;
shootcol = rand() % (width - 3) + 2 ;
} if (shoot2row <= 0) {
shoot2row = height - 1;
shoot2col = rand() % (width - 3) + 2;
}

}

return 0;
}

最佳答案

最简单的方法是使用 conio 库

#include <conio.h>
#define DELAY 300 // define here the amount of milliseconds to sleep

如果您使用的是 linux 或 mac

#include <unistd.h>

如果您使用的是 Windows

#include <windows.h>

这就是循环开始的样子

while (move != 's')
scanf(" %c", &move);

move = ' ';

while (move != 'e') {
printf("\n");

//Sleep(DELAY); // windows only sleep 's' lowercase for linux
usleep(DELAY); // for mac

if (_kbhit())
{
move = _getch();
}

if (move == 's') {
turn++;
}

关于c - 如何在终端自动执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977908/

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