欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
vs2017實(shí)現(xiàn)的貪吃蛇小游戲源代碼 好玩的東西第二蛋
[打印本頁(yè)]
作者:
柱子111
時(shí)間:
2019-3-17 19:15
標(biāo)題:
vs2017實(shí)現(xiàn)的貪吃蛇小游戲源代碼 好玩的東西第二蛋
使用vs2017實(shí)現(xiàn)的貪吃蛇小游戲
基于c語(yǔ)言,玩了很久的單片機(jī)了突然想回去玩玩上位機(jī)就跟著視頻學(xué)些了這個(gè)
因?yàn)椴粫?huì)錄制視頻視頻就不上傳了
純屬個(gè)人興趣愛(ài)好
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
//輔助宏定義
#define maph 25
#define mapw 40
#define snakesize 50
struct
{
//如何去定位:坐標(biāo)
int x;
int y;
}food;
//蛇的結(jié)構(gòu)體
struct
{
//記錄蛇得坐標(biāo)
int x[snakesize];
int y[snakesize];
//蛇的長(zhǎng)度
int len;
int speed;
}snake;
//全局變量
int key = 'w';//初始方向
int changeFlage = 0;//變化標(biāo)記
//////////////////////
//模塊設(shè)計(jì)
////////////////////
//地圖
void drawmap();
//食物
void creatfood();
//按鍵控制方向
void keydown();
//狀態(tài),判斷是否結(jié)束游戲
int snakestatus();
//光標(biāo)移動(dòng),光標(biāo)移動(dòng)
void gotoxy(int x,int y);
//////////////////
////////////主函數(shù)
//////////
int main(void)
{
drawmap();
while (1)
{
creatfood();
Sleep(snake.speed);
keydown();
if (!snakestatus())
{
break;
}
}
gotoxy(mapw/2, maph/2);
printf("Game Over");
system("pause");
return 0;
}
//地圖
void drawmap()
{ //○食物■墻和貪吃蛇
//隨機(jī)函數(shù)種子
srand((unsigned int)time(NULL));
//圈地
for (int i = 0; i <= maph; i++)
{
gotoxy(0,i);
printf("■");
gotoxy(mapw-2, i);
printf("■");
}
for (int i = 1; i <= mapw; i+=2)
{
gotoxy(i, 0);
printf("■");
gotoxy(i, maph-1);
printf("■");
}
//化蛇
//確定蛇的屬性
snake.len = 3;
snake.speed = 300;
snake.x[0] = mapw / 2;
snake.y[0] = maph / 2;//將蛇放到屏幕中間
//畫蛇頭
gotoxy(snake.x[0],snake.y[0]);
printf("■");
//畫蛇的身體
for (int k = 1; k < snake.len; k++)
{
snake.x[k] = snake.x[k - 1] + 2;
snake.y[k] = snake.y[k-1];
gotoxy(snake.x[k], snake.y[k]);
printf("■");
}
//畫食物
//坐標(biāo)的確定
while(1)
{food.x = rand() % (mapw - 4) + 2;
food.y = rand() % (maph - 2) + 1;
if (food.x % 2 == 0)
{
break;
}
}
//將確定的坐標(biāo)畫出來(lái)
gotoxy(food.x, food.y);
printf("○");
}
//食物產(chǎn)生
void creatfood()
{
//蛇吧食物吃了
if (snake.x[0] == food.x&&food.y[0] == food.y)
{
srand((unsigned int )time(NULL));
//產(chǎn)生的食物不能再蛇的身上并且坐標(biāo)要是偶數(shù)
while (1)
{
int flag = 1;
food.x = rand() % (mapw - 4) + 2;
food.y = rand() % (maph - 2) + 1;
//產(chǎn)生的食物不能再蛇的身上
for (int k = 0; k < snake.len; k++)
{
if (snake.x[k] == food.x&&snake.y[k] == food.y)
{
flag = 0;
break;
}
}
if (flag&&food.x % 2 == 0)
{
break;
}
}
}
gotoxy(food.x,food.y);
printf("○");
snake.len++;
changeFlage =1;//蛇的標(biāo)記
}
//按鍵實(shí)現(xiàn)
void keydown()
{
//無(wú)按鍵的處理
if (_kbhit())
{ //有按鍵接受
fflush(stdin);
key = _getch();
}
//擦除最后一節(jié)
if (!changeFlage)
{
gotoxy(snake.x[snake.len-1], snake.y[snake.len - 1]);
printf(" ");
}
//后面的蛇身處理
for (int i =snake.len-1 ; i > 0; i--)
{
snake.x[i] = snake.x[i - 1];
snake.y[i] = snake.y[i - 1];
}
//按鍵處理移動(dòng)方向的處理
switch (key)
{
case 'w':
case 'W':
snake.y[0]--;
break;
case 's':
case 'S':
snake.y[0]++;
break;
case 'a':
case 'A':
snake.x[0]-=2;
break;
case 'd':
case 'D':
snake.x[0]+=2;
break;
}
//蛇頭畫出來(lái)
gotoxy(snake.x[0], snake.y[0]);
printf("■");
changeFlage = 0;
gotoxy(maph +2,0);
}
//狀態(tài)
int snakestatus()
{
if (snake.x[0] == 2 || snake.x[0] == maph-2 || snake.y[0] == 0 || snake.y[0] == mapw-1)
return 0;
//蛇頭不能吃自己
for (int k = 1; k < snake.len; k++
余下內(nèi)容下載附件
復(fù)制代碼
全部資料51hei下載地址:
貪吃蛇c語(yǔ)言版本.docx
(16.32 KB, 下載次數(shù): 29)
2019-3-17 19:12 上傳
點(diǎn)擊文件名下載附件
2019-3-12
下載積分: 黑幣 -5
作者:
ZHANGGUANLIN
時(shí)間:
2019-8-4 17:45
很好,值得學(xué)習(xí)
作者:
wdnmd666
時(shí)間:
2019-8-30 09:59
很好,值得學(xué)習(xí)
作者:
hethpz
時(shí)間:
2020-5-20 23:12
新手看不懂,要是配個(gè)游戲的圖就好了
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1