visual studio中使用c++实现贪吃蛇小游戏

准备工作:在visual stuido配置图形库

这里使用easyx,EasyX Graphics Library for C++,

 直接安装即可,会自动装到visual studo

 之后写入需要的头文件,创建方向,蛇和食物的结构体

 

  • #include<stdio.h>:标准输入输出库。
  • #include<graphics.h>:图形库,用于绘制图形界面。
  • #include<conio.h>:控制台输入输出库,用于键盘输入。
  • #include<stdlib.h>:标准库,包含随机数生成等函数。
  • #define SNAKE_SIZE 500:定义蛇的最大长度。
  • 方向用枚举

 

  • struct Snake:定义蛇的结构体,包含蛇的长度size、方向dir,、速度speed和坐标数组coor[SNAKE_SIZE]struct Food:定义食物的结构体,包含食物的坐标、半径、是否存在的标志和颜色
  • struct Food:定义食物的结构体,包含食物的坐标、半径、是否存在的标志和颜色
  • 之后是初始化
  • void Gameinit() {
        initgraph(640, 480, SHOWCONSOLE);
        snake.size = 3;
        srand(GetTickCount());
        snake.dir = right;
        snake.speed = 10;
        for (int i = 0; i < snake.size; i++) {
            snake.coor[i].x = 40 - 10 * i;
            snake.coor[i].y = 10;
        }
        food.x = rand() % 640;
        food.y = rand() % 480;
        food.color = RGB(rand() % 256, rand() % 256, rand() % 256);
        food.r = rand() % 10 + 5;
        food.flag = true;
    }

  • initgraph(640, 480, SHOWCONSOLE):初始化图形窗口,大小为640x480,显示控制台。
  • 初始化蛇的属性,包括长度、方向、速度和初始坐标。
  • 随机生成食物的坐标、颜色和半径,并设置食物存在标志。
  • srand(GetTickCount()); 被用来初始化随机数生成器,以便在生成食物的位置、颜色和半径时能够得到不同的随机值
  • BeginBatchDraw():开始批量绘制。批量绘制可以提高绘图效率,减少闪烁。
  • setbkcolor(RGB(22, 14, 35)):设置背景颜色为深蓝色(RGB值为22, 14, 35)。
  • cleardevice():清空整个绘图设备,将背景颜色填充到整个窗口。
  • setfillcolor(RED):设置填充颜色为红色
  • 使用 for 循环遍历蛇的身体坐标数组 snake.coor
  • solidcircle(snake.coor[i].x, snake.coor[i].y, 5):在每个坐标点绘制一个半径为5的实心圆,表示蛇的身体部分。
  • if (food.flag):检查食物是否存在。
  • solidcircle(food.x, food.y, food.r):在食物的坐标点绘制一个半径为 food.r 的实心圆,表示食物。
  • EndBatchDraw():结束批量绘制,将所有绘图操作一次性提交到图形窗口。
  • for 循环从蛇的尾部开始,将每个部分的坐标更新为前一个部分的坐标。这样,蛇的身体就会依次向前移动,更新蛇的头部坐标
  • 检查蛇头是否接触到食物,如果接触则增加蛇的长度并重新生成食物
  • 检查是否有键盘输入(数字是键值),并根据输入更新蛇的方向
  • 初始化游戏。
  • 进入主循环,不断更新蛇的位置、处理键盘输入、检查是否吃到食物并绘制游戏画面。
  • Sleep(100):控制游戏帧率,每帧暂停100毫秒。
  • 运行结果

ps:键盘输入没反应的,如果是win11的,请进入win11的系统设置—>隐私与安全性—>开发者选项—>终端,将里面的内容改成windows控制台主机

新人第一次写博客,如有纰漏还请见谅


 

 

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值