跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

C++利用EasyX编写贪吃蛇游戏的示例代码

目录介绍小游戏运行效果图贪吃蛇游戏源代码介绍graphics.h是针对DOS下的一个C语言图形库 (c++也可以)目前支持下载此头文件的常用的有两种:1. EGE (Easy Graphics Engine) 2. EasyX Graphics Library EGE, 全名Easy Graphics Engine, 是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向C/C++语言新手的图形库EasyX, 全名EasyX Graphics Library, 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中我建议Visual Studio用EasyX, Dev-C++可以用EGE解决的方法:去EasyX官网下载EasyX的exe程序,点击后直接对自己使用的VC版本进行安装就行了,很简单。.

Graphics.h常用用法:1.initgraph(width, height)和closegraph() initgraph可以创建一个宽度为width, 高度为height的图形界面窗口运行结束后可以通过closegraph来关闭窗口注, closegraph之前记得用getch()函数来接收用户输入, 防止程序刚绘画玩就关闭窗口了

2.line(x1,y1,x2,y2)

从x1,y1坐标画一条直线到x2,y2坐标

3.setcolor和RGB

setcolor()可以把line画出来的直线变成另外一种颜色RGB可以返回setcolor的自定义参数RGB(r,g,b)可以修改不同浓度的红, 绿, 蓝EX:setcolor(RGB(200,0,0))可以将line画出来的直线变成红色

4.circle(x,y,radius)

在x,y坐标点画一个半径为radius的圆EX:circle(200, 200, 100);5.setfillcolor, bar(x1,y1,x2,y2) bar函数可以画出一个矩形范围为:x坐标从50-300,y坐标从100-200 setfillcolor()可以改变Bar的填充颜色值,参数也是RGB()函数的自定义颜色

6.fillellipse(x,y,xr,yr);

画一个在x, y坐标点的实心椭圆x轴上的半径为xr y轴上的半径为yr注:setfillcolor也可以改变其填充颜色值7.setfontbkcolor(), setfont(12, 0, "宋体") setfontcolor可以修改创建的文字的背景颜色值setfont(12,0,"宋体")的第一个参数是字体的高度第二个参数是字体的宽度, 如果填0, 那就会使用默认比例值第三个参数是设置文字的字体样式8.outtextxy(x, y, 字符串);这个函数可以在坐标x,y坐标点输出字符串注:字符串也可以是中文EX:outtextxy(100, 150, "中文也是支持的");小游戏运行效果图

贪吃蛇游戏源代码// 贪吃蛇小游戏.cpp : 定义控制台应用程序的入口点。

//#include "stdafx.h"#include #include #include #include #include #include #include "io.h"#define S_LEN 400 //蛇的最大节数#define S_SPEED 200 //蛇的速度#define S_SIZE 20 //蛇的大小//全局变量int score = 0;typedef enum Direction{up = 72,down = 80,left = 75,right = 77}; //蛇的方向//坐标结构体struct Coordinate{int x;int y;};//蛇的结构体struct Snake{Coordinate sCo[S_LEN]; //每一节蛇的坐标int num; //蛇的节数Direction direction; //蛇的方向}snake;//食物的结构体struct Food{Coordinate fCo;int flag; //食物是否被吃}food;//函数声明void InitSnake(); //初始化蛇void Snake_Food(); //食物坐标void Snake_Food_Paint(); //画食物void Snake_Paint(); //画蛇void Snake_Move(); //蛇移动void Snake_Change(); //方向性移动void Snake_Eat(); //食物是否被吃void Snake_Break(); //判断是否撞自己void Game_Over(); //结束游戏int main(int argc, char *argv[]){InitSnake();while (true){while (!_kbhit()){settextcolor(RED);score = (snake.num - 2) * 100;char s[5];sprintf(s, "%d", score);outtextxy(500, 60, s);if (food.flag == 0){Snake_Food();}Snake_Food_Paint();Snake_Break();Snake_Eat();Snake_Move();Sleep(S_SPEED);}Snake_Change();}return 0;}//初始化蛇void InitSnake(){//初始化图形界面initgraph(640, 480);setbkcolor(RGB(168, 168, 168));cleardevice();settextcolor(RED);settextstyle(32, 0, "黑体");outtextxy(510, 20, "贪吃蛇");settextcolor(BLACK);settextstyle(16, 0, "宋体");outtextxy(495, 100, "分数:");outtextxy(500, 400, "By:逃逸的卡路里");setcolor(RGB(46, 85, 6));setfillcolor(RGB(46, 85, 6));fillrectangle(0, 0, 480, 480);setcolor(RGB(199, 177, 163));setfillcolor(RGB(199, 177, 163));fillrectangle(40, 40, 440, 440);setcolor(RGB(102, 86, 0));for (int i = 0; i < 5; i++){rectangle(39 - i, 39 - i, 441 + i, 441 + i);}setcolor(RGB(168, 147, 130));for (int i = 60; i < 440; i += 20){line(i, 40, i, 440);line(40, i, 440, i);}setorigin(40, 40);setcolor(RGB(56, 89, 0));setfillcolor(RGB(91, 193, 45));fillcircle(10, 10, 9); //第一节蛇setfillcolor(WHITE);fillcircle(8, 5, 2);fillcircle(8, 15, 2);food.flag = 0; //食物被吃//蛇坐标初始化snake.sCo[0].x = 0 + S_SIZE;snake.sCo[0].y = 0;snake.sCo[1].x = 0;snake.sCo[0].y = 0;snake.num = 2;snake.direction = right;}//食物坐标void Snake_Food(){int i;srand((unsigned)time(NULL));while (true){int num = 0;food.fCo.x = rand() % (400 / S_SIZE)*S_SIZE;food.fCo.y = rand() % (400 / S_SIZE)*S_SIZE;for (i = 0; i < snake.num; i++){if (snake.sCo[i].x == food.fCo.x&&snake.sCo[i].y == food.fCo.y){num++;}}if (num == 0){break;}}food.flag = 1;}//画食物void Snake_Food_Paint(){setcolor(RED);setfillcolor(RED);fillcircle(food.fCo.x + 10, food.fCo.y + 10, 8);}//画蛇void Snake_Paint(){for (int i = snake.num - 1; i >= 0; i--){setcolor(RGB(56, 89, 0));setfillcolor(RGB(91, 193, 45));fillcircle(snake.sCo[i].x + 10, snake.sCo[i].y + 10, 9);if (i == 0){setfillcolor(WHITE);switch (snake.direction){case up:fillcircle(snake.sCo[i].x + 5, snake.sCo[i].y + 12, 2);fillcircle(snake.sCo[i].x + 15, snake.sCo[i].y + 12, 2);break;case down:fillcircle(snake.sCo[i].x + 5, snake.sCo[i].y + 8, 2);fillcircle(snake.sCo[i].x + 15, snake.sCo[i].y + 8, 2);break;case left:fillcircle(snake.sCo[i].x + 12, snake.sCo[i].y + 5, 2);fillcircle(snake.sCo[i].x + 12, snake.sCo[i].y + 15, 2);break;case right:fillcircle(snake.sCo[i].x + 8, snake.sCo[i].y + 5, 2);fillcircle(snake.sCo[i].x + 8, snake.sCo[i].y + 15, 2);break;}}}setcolor(RGB(199, 177, 163));setfillcolor(RGB(199, 177, 163));fillcircle(snake.sCo[snake.num].x + 10, snake.sCo[snake.num].y + 10, 9);}//蛇移动void Snake_Move(){for (int i = snake.num; i > 0; i--){snake.sCo[i].x = snake.sCo[i - 1].x;snake.sCo[i].y = snake.sCo[i - 1].y;}switch (snake.direction){case up:if (snake.sCo[0].y == 0){snake.sCo[0].y = 400 - S_SIZE;}else{snake.sCo[0].y -= S_SIZE;}break;case down:if (snake.sCo[0].y == 400 - S_SIZE){snake.sCo[0].y = 0;}else{snake.sCo[0].y += S_SIZE;}break;case left:if (snake.sCo[0].x == 0){snake.sCo[0].x = 400 - S_SIZE;}else{snake.sCo[0].x -= S_SIZE;}break;case right:if (snake.sCo[0].x == 400 - S_SIZE){snake.sCo[0].x = 0;}else{snake.sCo[0].x += S_SIZE;}break;}Snake_Paint();}//方向性移动void Snake_Change(){int ch;ch = getch();switch (ch){case 'w':case 'W':case up:if (snake.direction != down){snake.direction = up;}break;case 's':case 'S':case down:if (snake.direction != up){snake.direction = down;}break;case 'a':case 'A':case left:if (snake.direction != right){snake.direction = left;}break;case 'd':case 'D':case right:if (snake.direction != left){snake.direction = right;}break;}}//食物是否被吃void Snake_Eat(){if (snake.sCo[0].x == food.fCo.x&&snake.sCo[0].y == food.fCo.y){snake.num++;food.flag = 0;}}//判断是否撞自己void Snake_Break(){for (int i = snake.num - 1; i > 3; i--){if (snake.sCo[0].x == snake.sCo[i].x&&snake.sCo[0].y == snake.sCo[i].y){Game_Over();}}}//结束游戏void Game_Over(){cleardevice();setcolor(WHITE);outtextxy(200, 160, "GAME OVER!!!");Sleep(10000);closegraph();}以上就是C++利用EasyX编写贪吃蛇游戏的示例代码的详细内容,更多关于C++ EasyX贪吃蛇的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:C语言基于EasyX实现贪吃蛇C语言Easyx实现贪吃蛇详解基于easyx的C++实现贪吃蛇C++利用easyx图形库实现创意天天酷跑小游戏C++基于easyx实现迷宫游戏C++用easyx图形库实现障碍跑酷小游戏

相关文章