//0丶头文件
#include<stdio.h> //标准函数
#include<stdlib.h> //库文件
#include<graphics.h> //图形窗口
#include<conio.h> //控制台
#define SNAKE_NUM 500 //蛇的最大节数
//1丶蛇方向
enum DIR
{
UP, //上
DOWN, //下
LEFT, //左
RIGHT, //右
}
//2丶蛇结构
struct snake
{
int size; //蛇的节数
int speed; //蛇的速度
int dir; //蛇的方向
POINT coor[SNAKE_NUM]; //蛇坐标
}sanke;
//3丶食物结构
struct food
{
int x; //食物横坐标
int y; //食物纵坐标
int r; //食物半径
bool flag; 食物是否被吃
DWORD color; //食物颜色
}food;
//4丶数据初始化
void GameInit()
{
initgraph(640,480); //初始化图形窗口大小
srand(GetTickCount()); //从开机到现在经过的毫秒数,随机生成食物
snake.size=3; //初始化蛇的节数
snake.speed=10; //初始化蛇的速度
snake.dir=RIGHT; //初始化蛇的方向
for(int i=0;i<snake.size;i++)
{
snake.coor[i].x=40-10*i; //初始化蛇的三段节数代表 0 1 2 依此类推
snake.coor[i].y=10;
}
food.x=rand()%640;
food.y=rand()%480;
food.r=rand()%10+5; //随机生成半径为0~4的食物
food.flag=true;
food.color=RGB(rand()%256,rand()%256,rand()%256);
}
//5丶游戏绘制
void GameDraw()
{
BeginBatchDraw(); //双缓冲绘制
setbkcolor(RGB(28,115,119)); //图形窗口背景颜色
cleardevice(); //清空图形
setfillcolor(GREEN); //蛇和食物颜色
for(int i=0;i<snake.size;i++)
{
solidcircle(snake.coor[i].x,snake.coor[i].y,5); //绘制蛇 solidcircle - 圆形填充物
}
if(food.flag)
{
solidcircle(food.x,food.y,food.r); //绘制食物
}
EndBatchDraw(); //结束绘制
}
//6丶让蛇动起来
void snakeMove()
{
for(int i=0;i<snake.size;i++)
{
snake.coor[i]=snake.coor[i-1]; //移动时位置发生改变
}
switch(_getch()) //_getch()接收按键
{
case UP:
snake.coor[0].y-=snake.speed;
if(snake.coor[0].y+10<=0)
{
snake.coor[0].y=480;
}
break;
case DOWN:
snake.coor[0].y+=snake.speed;
if(snake.coor[0].y-10>=480)
{
snake.coor[0].y=0;
}
break;
case LEFT:
snake.coor[0].x-=snake.speed;
if(snake.coor[0].x+10<=0)
{
snake.coor[0].x=640;
}
break;
case RIGHT:
snake.coor[0].x-=snake.speed;
if(snake.coor[0].x-10>=640)
{
snake.coor[0].x=0;
}
break;
}
}
//7丶通过按键控制蛇的方向
void KeyControl()
{
if(_kbhit())
{
switch(_getch())
{
case 'w':
case 'W':
case '72':
if(snake.dir!=DOWN)
{
snake.dir=UP;
}
break;
case 's':
case 'S':
case '80':
if(snake.dir!=UP)
{
snake.dir=DOWN;
}
break;
case 'a':
case 'A':
case '75':
if(snake.dir!=RIGHT)
{
snake.dir=LEFT;
}
break;
case 'd':
case 'D':
case '78':
if(snake.dir!=LEFT)
{
snake.dir=RIGHT;
}
break;
case ' ': //空格暂停游戏逻辑
while(1)
{
if(_getch()==' ')
return;
}
}
}
}
//8丶吃食物
void Eatfood()
{
if(food.flag&&snake.coor[0].x>=food.x-food.r&&snake.coor[0].x<=food.x+food.r&&
snake.coor[0].y>=food.y-food.r&&snake.coor[0].y<=food.y+food.r)
{
food.flag=false;
snake.size++;
}
if(!food.flag) //食物被吃重新生成食物
{
food.x=rand()%640;
food.y=rand()%480;
food.r=rand()%10+5;
food.flag=true;
food.color=RGB(rand()%256,rand()%256,rand()%256);
}
}
//9丶暂停游戏
void stop()
{
if(_kbhit())
{
if(_getch()==' ')
{
while(_getch()==' ')
{
}
}
}
}
//10丶主函数
int main()
{
GameInit(); //初始化数据
while(1)
{
GameDraw(); //游戏绘制
snakeMove(); //让蛇动起来
KeyControl(); //通过按键改变蛇的方向
Eatfood(); //吃食物
Sleep(40); //控制蛇的速度
}
相关推荐
Pygame经典小游戏--贪吃蛇(完整代码+部分代码讲解)
通过本次对贪吃蛇游戏的改进和优化,提升了游戏的可玩性和趣味性,为玩家带来更加丰富和多样的游戏体验。如果你也对这款游戏感兴趣,不妨自己动手尝试一下,相信你会在编程的过程中找到无尽的乐趣和成就感!
从零开始实现贪吃蛇(完整代码)
本文将分为三个部分来讲解贪吃蛇的实现,分为贪吃蛇开始前的游戏画面、游戏中画面、游戏结束画面,那我们开始吧!
c++贪吃蛇源代码 完整版
c++ 实现贪吃蛇, 完整源码 文章结构: 数据结构分析 程序运行分析 难点分析 一点思考 源代码 总结 数据结构分析: 1.双向队列:这里我才用双向队列的数据结构存储蛇身节点(这里的蛇身节点我才用结构体来存储蛇身信息) (因为贪吃蛇的实现还是比较简单的,所以也只涉及到了这一种数据结构) 程序运行分析 程序开始用户随机按下w,a,s,d中任意按键开始游戏并且作为蛇运动的初始方向,然后进入循环持...
贪吃蛇完整代码 简便
【代码】贪吃蛇完整代码 简便。
贪吃蛇代码
贪吃蛇的代码: import pygame,sys,time,random from pygame.locals import * # 定义颜色变量,颜色范围在0-255之间,由红、绿、蓝三个颜色组成的 redColour = pygame.Color(255,0,0) blackColour = pygame.Color(0,0,0) Colour=pygame.Color(0,200,200) whiteColour = pygame.Color(255,255,255) greyColour =.
100行Python代码实现贪吃蛇小游戏(超详细)
贪吃蛇小游戏相信80、90后小时候肯定都玩过,那么你知道如果通过Python来实现吗?今天小千就来教大家。首先给大家看一下最终的呈现效果: 基本准备 首先,我们需要安装pygame库,小编通过pip install pygame,很快就安装好了。在完成贪吃蛇小游戏的时候,我们需要知道整个游戏分为四部分: 1.游戏显示:游戏界面、结束界面 2.贪吃蛇:头部、身体、食物判断、死亡判断 3.树莓:随机生成 4.按键控制:上、下、左、右 游戏显示 首先,我们来初始化pygame,定义颜色、游戏界面的窗口大小、标题
C语言简易贪吃蛇(附完整代码)
贪吃蛇小游戏 这是楼主刚学完C语言写的第一个小游戏,代码主要参考: https://blog.csdn.net/qq_37074040/article/details/54766680 我在模仿代码的过程中发现了原作者程序中的一些bug,以下f附有我加以改进后的代码。 1.游戏界面 楼主认为这个小游戏游戏界面的核心在于光标的控制。只要我们能让光标到达...
贪吃蛇——C语言实现(详细代码讲解)
贪吃蛇——C语言实现 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏,也就是实现贪吃蛇的基本功能,比如在地图中,用“↑↓←→”控制移动蛇的方向,吃掉食物之后,蛇身体会变长等等。。。。 首先我们得分析,游戏中我们会碰见的一些情况。 ①蛇的部分,蛇的身子是一节一节的,此时最容易联想到的数据结构就是顺序表,链表,如果把蛇比做顺序表或者链表,在之后吃到食物的时候,身子肯定会变长,这就...
10分钟教你用C++写一个贪吃蛇附带AI功能(史上最详细最入门的贪吃蛇教程)附源代码下载
C++编写贪吃蛇小游戏快速入门 刚学完C++。一时兴起,就花几天时间手动做了个贪吃蛇,后来觉得不过瘾,于是又加入了AI功能。希望大家Enjoy It. 效果图示 AI模式演示 整体规划+原理 大体上可以分为图上所示的几个类。不过……怎么看都有点强行面向对象的味道在里面。。[哭笑][哭笑][哭笑]。不管了……代码写得可能有点凌乱,下面我会为大家一一讲解。 整个程序设计...
Python贪吃蛇游戏详细代码和注释
在写Python游戏项目时,最重要的时python中的pygame库。安装pygame库和用法在我CSDN博客另一篇文章上。这里就不详细说了。下边时运行游戏界面。 下边是详细的代码和注释 import pygame,sys,random,time from pygame.locals import * #从pygame模块导入常用的函数和常量 #定义颜色变量 black_colour...
C语言实现贪吃蛇(详细版)
以上就是贪吃蛇的基本内容啦,完结撒花~下面有一些想说的话:这篇文章的完成时间是2023.5.12,我现在是一名大一下的计科学生,其实C语言在去年十月份的中旬就看完了翁恺老师的网课,那个时候其实就有能力完成这个贪吃蛇的编写了,但是知道现在才写完,其实是走了很多弯路,耽误了不少时间北哥,在加入北哥的知识星球”编程指北“后才回正了自己的学习方向,也希望大家都能在正确的道路上越走越远~
100行代码,轻松完成贪吃蛇小游戏,练完这个游戏你的Python就牛了
100行代码,轻松完成贪吃蛇小游戏,练完这个游戏你的Python就牛了
贪吃蛇游戏(C语言实现)
通过简单的c代码实现了这一款经典的小游戏贪吃蛇~
贪吃蛇游戏代码(C语言项目)
【代码】贪吃蛇游戏代码(C语言项目)
C语言小游戏--贪吃蛇(完整代码)
本文基于C语言,写的一游戏代码,可以利用键盘控制小蛇的移动,吃到食物,小蛇长度增加,得分加一,碰到砖块或是自己游戏失败。
贪吃蛇_代码+解析
define UP 0 //上#define DOWN 1 //下#define LEFT 2 //左#define RIGHT 3 //右#define X 23 //X坐标#define Y 40 //Y坐标#define MAXLEN 200 //最大长度#define MINTIME 75 //等待时间。
5592




被折叠的 条评论
为什么被折叠?



