早自習時突然想到怎麼寫貪吃蛇,話不多說,**如下:
開發環境:vs2015
雖然開始還是出了很多指標問題。。。(很煩c語言指標)除錯了很久也大概是可以暢快的玩了。
c語言新手,有很多寫得不好的地方望大神提出
當然,我也不介意把我**拿去學習(這樣就說明我的**有學習價值
標頭檔案:snake.h
/**
*by liu yuchuan
*2017.3.30
*/#ifndef snake_h_included
#define snake_h_included
#include//遊戲中各種符號
#define choose_logo "->"
#define snake_node '*'
#define wall '#'
#define food '$'
//地圖大小
#define mapwidth 50
#define mapheight 25
//蛇狀態
#define live 1
#define dead 0
//移動方向
enum direction;
typedef enum direction direction;
struct node;
typedef struct node node;
typedef node* snakehead;
typedef node* ptrtonode;
//蛇的鍊錶節點
struct node;
//蛇的結構體
typedef struct snake *snake;
//食物的結構體
typedef struct food *food;
//移動鍵
char key_down = 's';
char key_up = 'w';
char key_right = 'd';
char key_left = 'a';
//移動間隔時間
int movetime = 100;
//得分
int score = 0;
food food = null;
snake snake = null;
void menu();
void pos(int x, int y);
void startgame();
void initmap();
snake initsnake(snake snake);
void printsnake(snake snake);
void clearsnake(snake snake);
void move(snake snake);
snake getlonger(snake snake);
void createfood();
int islocationok(int x, int y);
#endif // snake_h_included
原始碼:snake.c
#include"snake.h"
#include#include#include#includeint main()
void menu()
} //上移
else if(ch == key_up)
} else if(ch == 13)
} }}//定位游標
void pos(int x, int y)
void startgame()
else if (snake->dir != down && ch == key_up)
else if (snake->dir != left && ch == key_right)
else if (snake->dir != right && ch == key_left)
} move(snake);
} pos(mapwidth + 2, mapheight / 2 - 1);
printf(" ");
pos(mapwidth + 2, mapheight / 2);
printf(" ");
pos(mapwidth + 2, mapheight / 2 + 1);
printf(" ");
pos(mapwidth + 2, mapheight / 2 + 2);
printf(" ");
pos(mapwidth + 2, mapheight / 2 - 1);
printf("遊戲結束");
pos(mapwidth + 2, mapheight / 2);
printf("最終長度: %d", snake->lenth);
pos(mapwidth + 2, mapheight / 2 + 1);
printf("您的得分: %d", score);
pos(mapwidth + 2, mapheight / 2 + 2);
printf("enter鍵返回主選單");
while(ch != 13)
ch = _getch();
system("cls");
}void initmap()
} }pos(mapwidth + 2, mapheight/2 - 1);
printf("當前長度(越長吃一次食物得分越高哦):");
pos(mapwidth + 2, mapheight/2);
printf("%d", snake->lenth);
pos(mapwidth + 2, mapheight / 2 + 1);
printf("當前得分:");
pos(mapwidth + 2, mapheight / 2+2);
printf("%d", score);
}snake initsnake(snake snake)
void printsnake(snake snake)
}void clearsnake(snake snake)
}void move(snake snake)
clearsnake(snake);
snakehead head = snake->snakehead;
int x = head->x;
int y = head->y;
int tmpx, tmpy;
switch (snake->dir)
while (head->next)
if (snake->snakehead->x == food->x
&& snake->snakehead->y == food->y && snake->state)
printsnake(snake);
sleep(movetime);
}snake getlonger(snake snake)
int x1 = position->x;
int y1 = position->y;
position = position->next;
int x2 = position->x;
int y2 = position->y;
position->next = (ptrtonode)malloc(sizeof(node));
position->next->next = null;
if (x1 == x2)
else
snake->lenth++;
return snake;
}//生成食物
void createfood()
} }}//判斷位置是否合理
int islocationok(int x, int y)
} return x > 0 && x < mapwidth - 1
&& y > 0 && y < mapheight - 1;
}
C語言貪吃蛇實現 鍊錶學習
以下 片段就是整個源 主要是github上大佬寫的,附上位址 我又在這基礎上優化了點,釋放漏釋放的記憶體,禁止蛇反向運動 include include include include include include define src width 70 define src height 20 ...
C語言 貪吃蛇遊戲
相信每個人都接觸過貪吃蛇遊戲,而對於學習c語言的同學來說,一開始是不是覺得c語言寫不出什麼東西來呢?那麼,貪吃蛇應該是第一步,開始了解一些模組化的知識,一些物件導向的思想,一些小專案的編寫。效果 通過 wasd 移動蛇,蛇能夠吃隨機產生的食物,並且變長。基本實現 用兩個陣列snakex,snakey...
C語言 貪吃蛇遊戲
該遊戲不依賴tc環境,任何第三方庫,可以在vc 6.0 vs c free等常見ide中編譯通過。設計貪吃蛇遊戲的主要目的是讓大家夯實c語言基礎,訓練程式設計思維,培養解決問題的思路,領略多姿多彩的c語言。遊戲開始後,會在中間位置出現一條只有三個節點的貪吃蛇,並隨機出現乙個食物,如下圖所示 圖1 遊...