久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
一個簡易的貪吃蛇小游戲C語言源碼
[打印本頁]
作者:
twc976327901
時間:
2018-3-25 10:10
標題:
一個簡易的貪吃蛇小游戲C語言源碼
貪吃蛇源碼,C語言
源程序如下:
/*
*程序名稱:貪吃蛇v2.1
*程序描述:一個簡易的貪吃蛇小游戲
*版本信息:v2.1
*v1.1版本更新:1:加入菜單選擇項
*v1.2版本更新:1:修復菜單選擇bug
*v1.3班本更新:1:加入難度選擇項
* 2:增加鍵盤采集頻率,大大增加操作靈敏度
* 3:優化屏幕刷新頻率,平衡刺眼的情況
*v2.0版本更新:1:使用新的數據存儲結構
* 2:使用全新的蛇的形狀,更加美觀
* 3:解決了1.X版本地圖長寬不等距的問題
*v2.1版本更新:1:修復蛇行進過程中快速切換方向至死亡的bug
* 2:屏幕刷新改為蛇每前進一次刷新一次,閃屏更柔和
* 3:更新退出后版本信息的輸出
*/
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
#include<time.h>
#include<conio.h>
int i;
#define N 25
#define M 22
//結構體名的宏定義
#define STRU_B struct board
//結構體元素part的值定義
#define bBORDER "◆"
#define sHEAD "■"
#define sBODY "◆"
#define sTAIL "◇"
#define bNONE " "
#define bFOOD "☆"
//結構體元素drection的值定義
#define UP 24
#define DOWN 25
#define RIGHT 26
#define LEFT 27
struct board{
char drection;
char part[4];
};
void print_first(void);
int degree_difficulty(void);
void start(int diff);
void initialise_board(STRU_B(*p)[N]);
void creat_sanke(STRU_B(*p)[N]);
void show_board(STRU_B(*p)[N]);
int move_snake(STRU_B(*p)[N], char drection);
void delete_tail(STRU_B(*p)[N]);
void lose(STRU_B(*p)[N]);
void add_food(STRU_B(*p)[N]);
void print_last();
int main(void)
{
print_first();
do
{
start(degree_difficulty());
printf("1:再來一局\n2:退出\n請選擇:");
fflush(stdin);
scanf("%d", &i);
} while (i == 1);
print_last();
return 0;
}
void print_first(void)
{
printf("*************歡迎來到貪吃蛇*************\n\n");
printf("使用鍵盤上、下、左、右鍵控制方向\n\n\n");
}
int degree_difficulty(void)
{
int diff;
do
{
printf("\n請選擇難度:(1——3):");
scanf("%d", &diff);
switch (diff)
{
case 1:diff = 10; break;
case 2:diff = 6; break;
case 3:diff = 2; break;
default:
break;
}
if (2 <= diff && diff <= 10)
return diff;
printf("\n請輸入正確的編號選擇難度:(1——3):");
} while (1);
}
void start(int diff)
{
STRU_B board[M][N];
char drection = RIGHT;
int isn_lose = 1, i, dc;
initialise_board(board);
creat_sanke(board);
while (isn_lose)
{
dc = 0;
system("CLS");
show_board(board);
for (i = 0; i < diff; i++)
{
if (GetKeyState(VK_UP) < 0 && drection != DOWN && dc == 0) drection = UP, dc++;
if (GetKeyState(VK_DOWN) < 0 && drection != UP && dc == 0) drection = DOWN, dc++;
if (GetKeyState(VK_LEFT) < 0 && drection != RIGHT && dc == 0) drection = LEFT, dc++;
if (GetKeyState(VK_RIGHT) < 0 && drection != LEFT && dc == 0) drection = RIGHT, dc++;
Sleep(10);
}
isn_lose = move_snake(board, drection);
}
system("CLS");
show_board(board);
}
void initialise_board(STRU_B(*p)[N])
{
int i, j;
for (j = 0; j < N; j++)
strcpy(p[0][j].part , bBORDER);
for (i = 1; i < M - 1; i++)
for (j = 0; j < N; j++)
if (j == 0 || j == (N - 1))
strcpy(p[i][j].part , bBORDER);
else
strcpy(p[i][j].part , bNONE);
for (j = 0; j < N; j++)
strcpy(p[M - 1][j].part , bBORDER);
}
void creat_sanke(STRU_B(*p)[N])
{
p[M / 2][N / 2].drection = RIGHT;
strcpy(p[M / 2][N / 2].part , sHEAD);
p[M / 2][N / 2 - 1].drection = RIGHT;
strcpy(p[M / 2][N / 2 - 1].part , sBODY);
p[M / 2][N / 2 - 2].drection = RIGHT;
strcpy(p[M / 2][N / 2 - 2].part , sTAIL);
add_food(p);
}
void show_board(STRU_B(*p)[N])
{
int i, j;
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
printf("%s", p[i][j].part);
printf("\n");
}
}
int move_snake(STRU_B(*p)[N], char drection)
{
int i, j, NH = 0;
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
{
if (strcmp(p[i][j].part, bNONE) == 0 || strcmp(p[i][j].part, sBODY) == 0);
else if (strcmp(p[i][j].part , sHEAD) == 0 && NH == 0)
{
p[i][j].drection = drection;
switch (drection)
{
case UP:if (strcmp(p[i - 1][j].part , bBORDER) == 0) { lose(p); return 0; }
if (strcmp(p[i - 1][j].part , bFOOD) == 0) add_food(p);
else delete_tail(p);
p[i - 1][j] = p[i][j];
break;
case DOWN:if (strcmp(p[i + 1][j].part, bBORDER) == 0) { lose(p); return 0; }
if (strcmp(p[i + 1][j].part, bFOOD) == 0) add_food(p);
else delete_tail(p);
p[i + 1][j] = p[i][j];
break;
case LEFT:if (strcmp(p[i][j - 1].part, bBORDER) == 0) { lose(p); return 0; }
if (strcmp(p[i][j - 1].part, bFOOD) == 0) add_food(p);
else delete_tail(p);
p[i][j - 1] = p[i][j];
break;
case RIGHT:if (strcmp(p[i][j + 1].part, bBORDER) == 0) { lose(p); return 0; }
if (strcmp(p[i][j + 1].part, bFOOD) == 0) add_food(p);
else delete_tail(p);
p[i][j + 1] = p[i][j];
break;
}
strcpy(p[i][j].part, sBODY);
NH++;
}
}
return 1;
}
void delete_tail(STRU_B(*p)[N])
{
int i, j, NT = 0;
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
if (strcmp(p[i][j].part, sTAIL) == 0 && NT == 0)
{
switch (p[i][j].drection)
{
case UP:strcpy(p[i - 1][j].part, p[i][j].part), strcpy(p[i][j].part, bNONE);
break;
case DOWN:strcpy(p[i + 1][j].part, p[i][j].part), strcpy(p[i][j].part, bNONE);
break;
case LEFT:strcpy(p[i][j - 1].part, p[i][j].part), strcpy(p[i][j].part, bNONE);
break;
case RIGHT:strcpy(p[i][j + 1].part, p[i][j].part), strcpy(p[i][j].part, bNONE);
break;
}
NT++;
}
}
void lose(STRU_B(*p)[N])
{
strcpy(p[M / 2][N / 3].part, "Yo");
strcpy(p[M / 2][N / 3 + 1].part, "u ");
strcpy(p[M / 2][N / 3 + 2].part, "lo");
strcpy(p[M / 2][N / 3 + 3].part, "se");
strcpy(p[M / 2][N / 3 + 4].part, "! ");
}
void add_food(STRU_B(*p)[N])
{
int x, y;
srand(time(0));
x = (rand() % N - 2) + 1;
y = (rand() % M - 2) + 1;
while (strcmp(p[y][x].part, bNONE) != 0)
{
x = (rand() % N - 2) + 1;
y = (rand() % M - 2) + 1;
}
strcpy(p[y][x].part, bFOOD);
}
void print_last()
{
system("CLS");
printf("\n\n\n********************************************************\n");
printf("* *\n");
printf("* 貪吃蛇v2.1 *\n");
printf("* *\n");
printf("********************************************************\n");
Sleep(1000);
}
復制代碼
所有資料51hei提供下載:
貪吃蛇.zip
(2.08 KB, 下載次數: 19)
2018-3-25 10:09 上傳
點擊文件名下載附件
源碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产欧美精品
|
国内精品一区二区
|
国产高清视频
|
一区2区
|
日韩字幕
|
久久久免费观看视频
|
在线观看亚洲专区
|
亚洲va在线va天堂va狼色在线
|
国产日产欧产精品精品推荐蛮挑
|
国产亚洲精品美女久久久久久久久久
|
亚洲欧美激情国产综合久久久
|
日韩电影中文字幕
|
亚洲视频在线播放
|
先锋资源吧
|
在线中文视频
|
一级欧美黄色片
|
一区二区精品视频
|
精品国产伦一区二区三区观看方式
|
午夜av电影
|
亚洲一区二区高清
|
色综合久久天天综合网
|
亚洲 一区
|
精品久久久久久久人人人人传媒
|
毛片a
|
欧美日韩精品一区二区天天拍
|
日韩欧美综合在线视频
|
欧美日韩高清一区
|
日韩国产专区
|
免费高清成人
|
成人免费视频网站在线观看
|
91精品国产91久久久久游泳池
|
五月天婷婷综合
|
亚洲精品1区
|
日韩中文字幕一区
|
欧美日韩视频网站
|
国产馆
|
av一二三区
|
久久国
|
久久久精品久久久
|
精品电影
|
久久99久久98精品免观看软件
|