資源簡介
初學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? for?(int?j?=?0;?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? for?(int?j?=?0;?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)?{??//
- 上一篇:vs2008 can總線通訊源碼
- 下一篇:Tcp自定義命令調試工具
評論
共有 條評論