资源简介

初学C语言总觉得不能做些什么好玩的,这个小游戏只需 “一点点” (千真万确)C语言知识就能完成!
总计不到200行的非空白代码(没有强行压缩行数)

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 

#define  high 25   //画布高
#define width 60   //画布宽
#define  border -1    //边界
#define   blank  0    //空白
#define   plane  1    //飞机
#define  bullet  2    //子弹
#define   enemy  3    //敌机
#define destroy  4    //摧毁标记

int canvas[high + 2][width + 2];  //游戏场景的高和宽
int pos_h pos_w;   //飞机位置
int enemynum;    //敌机数量
int interval; //同个计次来模拟时间间隔
int itv_move; //敌机移动的时间间隔
int itv_new; //敌机刷新的时间间隔
int score;  //分数
int IsOver;  //判断游戏是否结束

void Startup();   //游戏数值初始化
void Show();    //游戏界面输出
void UpdateInput();     //因输入导致的游戏状态更新
void UpdateNormal();    //与输入无关的游戏状态更新
void HideCursor(); //隐藏光标
void gotoxy(int x int y); //回调光标

int main() {
Startup();  //初始化
while (IsOver) {   //游戏循环
UpdateInput();
UpdateNormal();
Show();
}
printf(“\t\tgame over!\n“);
Sleep(2500);    //暂停游戏结束界面(毫秒)
system(“pause“);
return 0;
}
void Startup() {  //游戏数值初始化
IsOver = 1;
score = 0;  //初始化分数
for (int i = 0; i < high + 2; i++) {      //初始化画布
for (int j = 0; j < width + 2; j++) {
if (i == 0 || i == high + 1 ||
j == 0 || j == width + 1) {
canvas[i][j] = border;
}
else canvas[i][j] = blank;
}
}
pos_h = high / 2;    //初始化飞机竖直坐标
pos_w = width / 2;     //初始化飞机水平坐标
canvas[pos_h][pos_w] = plane;  //初始化飞机位置
enemynum = 3;       //敌机数量
srand(time(NULL));
interval = 4;      //初始化时间间隔计数
itv_move = 5;      //初始化敌机移动时间间隔
itv_new = 40;     //初始化敌机刷新时间间隔
}
void Show() {  //游戏界面输出
HideCursor();   //隐藏光标
gotoxy(1 1);    //回调光标、刷新画面
for (int i = 0; i < high + 2; i++) {
for (int j = 0; j < width + 2; j++) {
if (canvas[i][j] == plane) { //当前位置为飞机位置
printf(“*“);
}
else if (canvas[i][j] == bullet) {  //当前位置为子弹位置
printf(“|“);
}
else if (canvas[i][j] == enemy) {  //当前位置为敌机位置
printf(“@“);
}
else if (canvas[i][j] == border) {  //当前位置为边界
printf(“#“);
}
else if (canvas[i][j] == blank) {  //当前位置无物,且在边界内
printf(“ “);
}
else if (canvas[i][j] == destroy) {  //当前位置无物,且在边界内
printf(“x“);
}
}
printf(“\n“);
}
printf(“\n得分:%d“ score);
}
void UpdateInput() {  //因输入导致的游戏状态更新
char key_W = GetKeyState(‘W‘)  //监测 W 键是否按下
key_S = GetKeyState(‘S‘)  //监测 S 键是否按下
key_A = GetKeyState(‘A‘)  //监测 A 键是否按下
key_D = GetKeyState(‘D‘)  //监测 D 键是否按下
key_attack = GetKeyState(‘ ‘);  //监测 空格 键是否按下
if (kbhit()) { //当有键按下时  //vc++6.0以上版本为 _kbhit()
if (key_W < 0) {  //当按下 W 键,上移
if (pos_h > 1) {
canvas[pos_h][pos_w] = blank;
if (canvas[pos_h - 1][pos_w] == enemy) {  //

评论

共有 条评论