今天用C语言写了一个贪吃蛇小游戏
2020-03-01 01:43
323 查看
不多说,直接写;
#include<stdio.h> #include<conio.h> #include<time.h> #include<stdlib.h> #include<graphics.h> #include<mmsyscom.h> #pragma comment(lib,"winmm.lib") #define NUM 200 #define SIZE 10 enum Ch{ up = 72, down = 80, left = 75, right = 77 }; struct Coor { int x; int y; }; struct Snake { int n; Ch ch; Coor szb[NUM]; }; struct Food { int x; int y; bool iseat; }; Snake snake; Food food; int speed = 100; int jf = 0; char t[10000] = { 0 }; void GameInit() { srand((unsigned int)time(NULL)); snake.n = 3; snake.ch = right; snake.szb[0].x = 100; snake.szb[0].y = 100; snake.szb[1].x = 90; snake.szb[1].y = 100; snake.szb[2].x = 80; snake.szb[2].y = 100; food.iseat = true; } void DrawGame() { cleardevice(); setfillcolor(RED); fillrectangle(snake.szb[0].x, snake.szb[0].y, snake.szb[0].x + SIZE, snake.szb[0].y + SIZE); for (int i = 0; i < snake.n; i++) { rectangle(snake.szb[i].x, snake.szb[i].y, snake.szb[i].x + SIZE, snake.szb[i].y + SIZE); } setfillcolor(GREEN); fillroundrect(food.x, food.y, food.x + SIZE, food.y + SIZE, 5, 5); } void SnakeMove() { for (int i = snake.n - 1; i>0; i--) { snake.szb[i].x = snake.szb[i - 1].x; snake.szb[i].y = snake.szb[i - 1].y; } switch (snake.ch) { case up: snake.szb[0].y -= SIZE; break; case down: snake.szb[0].y += SIZE; break; case left: snake.szb[0].x -= SIZE; break; case right: snake.szb[0].x += SIZE; break; } } void ChangeCh() { char key; key = getch(); switch (key) { case up: if (snake.ch != down) { snake.ch = up; } break; case down: if (snake.ch != up) { snake.ch = down; } break; case left: if (snake.ch != right) { snake.ch = left; } break; case right: if (snake.ch != left) { snake.ch = right; } break; } } void CreatFood() { bool flag = false; if (food.iseat == true) { while (1) { food.x = rand() % 64 * 10; food.y = rand() % 48 * 10; for (int i = 0; i < snake.n; i++) { if (food.x == snake.szb[i].x&&food.y == snake.szb[i].y) { flag = true; break; } } if (!flag) { food.iseat = false; break; } } } } void EatFood() { if (snake.szb[0].x == food.x&&snake.szb[0].y == food.y) { food.iseat = true; snake.n++; jf++; } } void drawjf() { setbkmode(0); sprintf(t, "当前分数:%d", jf); settextcolor(RED); outtextxy(520, 5, t); } int GameOver() { if (snake.szb[0].x<0 || snake.szb[0].x>640 || snake.szb[0].y<0 || snake.szb[0].y>480) { return 1; } for (int i = 1; i < snake.n - 1; i++) { if (snake.szb[0].x == snake.szb[i].x&&snake.szb[0].y == snake.szb[i].y) { return 1; } } return 0; } int main() { initgraph(640, 480); mciSendString("open 1.mp3", NULL, NULL, NULL); mciSendString("play 1.mp3 repeat", NULL, NULL, NULL); GameInit(); int n = 0; while (1) { while (!kbhit()) { SnakeMove(); DrawGame(); drawjf(); CreatFood(); EatFood(); n = GameOver(); if (n) { break; } Sleep(speed); } if (n) { break; } ChangeCh(); } closegraph(); return 0; }
我用的是vs2013,多字节字符集。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 如何用python做一个贪吃蛇小游戏并给游戏加上背景音乐(pygame的应用)
- c语言写了一个贪吃蛇
- 一个C语言写的小游戏(flappy bird)
- C语言小游戏——贪吃蛇
- 一个贪吃蛇小游戏 用 C WINAPI 写的
- 怎样实现一个图层的运动(可实现贪吃蛇小游戏,代码现不完善,请关注本人,今日完善)
- c语言贪吃蛇小游戏
- 一个好玩的小游戏(纯C语言编写)
- 不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊
- 从今天开始学习C语言,力求做一个最棒的Linux C开发人员
- 一个unix的贪吃蛇小游戏
- 用js做一个小游戏—贪吃蛇
- 一个控制台贪吃蛇小游戏(wsad控制移动)
- 小游戏——贪吃蛇(c语言实现)
- 在linux下用C语言编写贪吃蛇小游戏
- 1.百度150道题,今天开刷。1.用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
- C语言贪吃蛇经典小游戏
- 用c语言编写一个简单的三子棋小游戏程序
- 今天调试的一个bug,如果你懂c语言,不妨进来锻炼下眼力哦