資源簡介
新手初學Linux c 寫的多線程人機一起的貪吃蛇,終端玩耍,解壓,make,gcc就可以了,寫的很差大神批評指正
代碼片段和文件信息
//
//?Created?by?zong?on?18-6-30.
//
#include?“Head.h“
/*
?*?初始化地圖墻用9表示空白用0
?*/
void?Map_Init(void)
{
????printf(“\033[2J“);????????????//?清屏
????system(“stty?-icanon“);???????//?關緩沖
????system(“stty?-echo“);?????????//?關回顯
????fprintf(stdout“\033[?25l“);??//?關閉鼠標顯示
????//初始化行?列??墻用9數字標記?其他為0
????for?(int?i?=?0;?i?????????Snake_Map[0][i]?=?9;
????????Snake_Map[MAX_MAP_ROW-1][i]?=?9;
????}
????for?(int?j?=?0;?j?????????Snake_Map[j][0]?=?9;
????????Snake_Map[j][MAX_MAP_LINE-1]?=?9;
????}
}
/*
?*?游戲顯示
?*/
void?show_game(void)
{
????//?定位到第一行第一列
????fprintf(stdout“\033[1;1H“);
????fflush(stdout);
????//?打印所有數據
????for?(int?i?=?0;?i?????{
????????for?(int?j?=?0;?j?????????{
????????????if?(0?==?Snake_Map[i][j])???????//?空白區域
????????????{
????????????????fprintf(stdout“??“);
????????????}
????????????else?if?(9?==?Snake_Map[i][j])??//?邊界區域
????????????{
????????????????fprintf(stdout“\033[41m??\033[0m“);
????????????}
????????????else?if(1?==?Snake_Map[i][j])
????????????{
????????????????fprintf(stdout“\033[42m??\033[0m“);
????????????}
????????????else?if(2?==?Snake_Map[i][j])
????????????{
????????????????fprintf(stdout“\033[43m??\033[0m“);
????????????}
????????????else?if(3?==?Snake_Map[i][j])
????????????{
????????????????fprintf(stdout“\033[44m??\033[0m“);
????????????}
????????}
????????fputc(‘\n‘stdout);
????}
}
/*
?*?游戲結束
?*/
void?game_over(void)
{
????/*?恢復終端設置?*/
????system(“stty?icanon“);??????????//?恢復緩沖
????system(“stty?echo“);????????????//?恢復回顯
????fprintf(stdout“\033[?25h“);????//?恢復鼠標顯示
????/*?尾部處理?*/
????fprintf(stdout“\033[200;1H“);??//?定位光標到最后一行
????exit(0);
}
/*
?*?釋放蛇體
?*/
void?Desnake(snake_list?*snakeList)
{
????snake?*temp;
????while?(NULL!=snakeList->top->next)
????{
????????temp?=?snakeList->top;
????????snakeList->top?=?snakeList->top->next;
????????free(temp);
????????temp?=?NULL;
????}
????free(snakeList->top);
????snakeList->top?=?NULL;
}
評論
共有 條評論