-
大小: 10KB文件類型: .gz金幣: 1下載: 1 次發(fā)布日期: 2021-05-16
- 語言: C/C++
- 標(biāo)簽:
資源簡介
這是一個(gè)適合與起步linux學(xué)習(xí),但有一定的C編程能力的人學(xué)習(xí),目的是易提高計(jì)算機(jī)語言及開發(fā)環(huán)境興趣。更希望能幫助到能然愛與這一行業(yè)的人們!
代碼片段和文件信息
#include?“mytype.h“
const?int?save_user_data(user_t?*head)
{
FILE?*fp?=?NULL;
user_t?*p?=?head;
//打開文件
fp?=?fopen(UINFOFNAME?MODE_W);
//重新寫入數(shù)據(jù)
while(NULL?!=?p)
{
p->activity?=?0;
fwrite(p?sizeof(user_t)?1?fp);
p?=?p->next;
}
//關(guān)閉文件
fclose(fp);
return?0;
}
int?main?(void)
{
//定義蛇結(jié)構(gòu)指針
snake_t?*mysnake?=?NULL;
//定義食物結(jié)構(gòu)指針
food_t??*myfood??=?NULL;
//定義用戶結(jié)構(gòu)指針
user_t?*head?=?NULL;
//初始化鍵盤,使支持監(jiān)測鍵盤可讀模式
init_keyboard();
//清屏
printf?(“\033[2J“);
//重置光標(biāo)
gotoxy?(0?0);
//隱藏光標(biāo)
printf?(“\033[?25l“);
//初始化游戲
init_game(&mysnake?&myfood?&head);
//游戲總列表。按ESC則退出
while(1)
{
//蛇移動(dòng)方向選擇
switch(mysnake->new_head_way)
{
case?KEY__UP://向上移動(dòng)
move_up(mysnake?myfood);
break;
case?KEY__DOWN://向下移動(dòng)
move_down(mysnake?myfood);
break;
case?KEY__LEFT://向左移動(dòng)
move_left(mysnake?myfood);
break;
case?KEY__RIGHT://向右移動(dòng)
move_right(mysnake?myfood);
break;
default://重新啟動(dòng)后默認(rèn)向右移動(dòng)
reboot_move_right(mysnake?myfood);
}
//判斷是否過關(guān)
if?(MYOK?==?mysnake->new_head_way)
{
int?i?=?0;
int?j?=?0;
//輸出信息
gotoxy(LIMIT_X?+?2?21);
printf?(“恭喜你通過次關(guān)保持這種狀態(tài)繼續(xù)?。。 埃?
mydelay(0x5FFFFFFF);
//清屏
for?(i?=?1;?i? {
gotoxy(3?i);
for?(j?=?3;?j? {
printf?(“?“);
}
}
//進(jìn)入下一關(guān)
gotoxy(LIMIT_X?+?2?21);
printf?(“游戲正在啟動(dòng),請(qǐng)等待?...??????????????“);
mydelay(0x5FFFFFFF);
//強(qiáng)制讓游戲從默認(rèn)狀態(tài)開始
mysnake->new_head_way?=?‘f‘;
mydelay(0x5FFFFFFF);
//重新定義游戲速度
if?(-1?==?regame_level(head))
{
//如果函數(shù)返回-1,則表示通關(guān),強(qiáng)制結(jié)束游戲
mysnake->new_head_way?=?ESC;
}
mydelay(0x5FFFFFFF);
//升級(jí)后重新打印提示信息
print_game_info(head);
//清除前面的提示信息
gotoxy(LIMIT_X?+?2?21);
printf?(“?????????????????????????????“);
}
//判斷是否要結(jié)束游戲
if(ESC?==?mysnake->new_head_way)
{
//輸出結(jié)束信息
gotoxy(LIMIT_X?+?2?24);
printf?(“正在保存數(shù)據(jù)?...“);
save_user_data(head);
gotoxy(LIMIT_X?+?2?26);
printf?(“游戲結(jié)束!“);
gotoxy(LIMIT_X?+?2?28);
break;
}
}
close_keyboard();
//釋放內(nèi)存
free(mysnake);
free(myfood);
free(head);
//清屏
printf?(“\033[2J“);
//重置光標(biāo)
gotoxy?(0?0);
//顯示光標(biāo)
printf?(“\33[?25h“);
return?0;
}
評(píng)論
共有 條評(píng)論