资源简介
这是一个适合与起步linux学习,但有一定的C编程能力的人学习,目的是易提高计算机语言及开发环境兴趣。更希望能帮助到能然爱与这一行业的人们!
代码片段和文件信息
#include “mytype.h“
const int save_user_data(user_t *head)
{
FILE *fp = NULL;
user_t *p = head;
//打开文件
fp = fopen(UINFOFNAME MODE_W);
//重新写入数据
while(NULL != p)
{
p->activity = 0;
fwrite(p sizeof(user_t) 1 fp);
p = p->next;
}
//关闭文件
fclose(fp);
return 0;
}
int main (void)
{
//定义蛇结构指针
snake_t *mysnake = NULL;
//定义食物结构指针
food_t *myfood = NULL;
//定义用户结构指针
user_t *head = NULL;
//初始化键盘,使支持监测键盘可读模式
init_keyboard();
//清屏
printf (“\033[2J“);
//重置光标
gotoxy (0 0);
//隐藏光标
printf (“\033[?25l“);
//初始化游戏
init_game(&mysnake &myfood &head);
//游戏总列表。按ESC则退出
while(1)
{
//蛇移动方向选择
switch(mysnake->new_head_way)
{
case KEY__UP://向上移动
move_up(mysnake myfood);
break;
case KEY__DOWN://向下移动
move_down(mysnake myfood);
break;
case KEY__LEFT://向左移动
move_left(mysnake myfood);
break;
case KEY__RIGHT://向右移动
move_right(mysnake myfood);
break;
default://重新启动后默认向右移动
reboot_move_right(mysnake myfood);
}
//判断是否过关
if (MYOK == mysnake->new_head_way)
{
int i = 0;
int j = 0;
//输出信息
gotoxy(LIMIT_X + 2 21);
printf (“恭喜你通过次关保持这种状态继续!!!“);
mydelay(0x5FFFFFFF);
//清屏
for (i = 1; i < LIMIT_Y + 1; i++)
{
gotoxy(3 i);
for (j = 3; j < LIMIT_X - 3; j++)
{
printf (“ “);
}
}
//进入下一关
gotoxy(LIMIT_X + 2 21);
printf (“游戏正在启动,请等待 ... “);
mydelay(0x5FFFFFFF);
//强制让游戏从默认状态开始
mysnake->new_head_way = ‘f‘;
mydelay(0x5FFFFFFF);
//重新定义游戏速度
if (-1 == regame_level(head))
{
//如果函数返回-1,则表示通关,强制结束游戏
mysnake->new_head_way = ESC;
}
mydelay(0x5FFFFFFF);
//升级后重新打印提示信息
print_game_info(head);
//清除前面的提示信息
gotoxy(LIMIT_X + 2 21);
printf (“ “);
}
//判断是否要结束游戏
if(ESC == mysnake->new_head_way)
{
//输出结束信息
gotoxy(LIMIT_X + 2 24);
printf (“正在保存数据 ...“);
save_user_data(head);
gotoxy(LIMIT_X + 2 26);
printf (“游戏结束!“);
gotoxy(LIMIT_X + 2 28);
break;
}
}
close_keyboard();
//释放内存
free(mysnake);
free(myfood);
free(head);
//清屏
printf (“\033[2J“);
//重置光标
gotoxy (0 0);
//显示光标
printf (“\33[?25h“);
return 0;
}
- 上一篇:C#与C++进程间通信
- 下一篇:c++实现生产者消费者问题
评论
共有 条评论