C++贪食蛇代码亲测有效
学完C语言,想做个东西,C只有控制台,很无奈,于是用VisualStudio2017码的C++代码,贪食蛇,亲测有效,不懂的可以咨询我qq:2323178881,一起探讨,要用到Easyx,你也可以用其他的工具,代码如下:
#pragma once
#include<stdio.h>
#include<tchar.h>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib ,"winmm.lib")
#include <time.h>
#include <conio.h>#define N 20 //这里设置一节蛇的大小为20*20个像素
#define MAXM 1000void InitGame();//初始化
void SnakeDraw();//绘制蛇
void SnakeMove();//蛇移动
void SnakeDirection();//蛇的方向控制
void EatFood();
void FoodPaint();
void FoodCool();
void GameBreak();
void GameOver();enum CH {//枚举类型表示上下左右键的键值up = 72,down = 80,left = 75,right = 77
};struct COOR {int x;int y;
};struct SNAKE {int n;//蛇节数COOR scr[MAXM];//蛇节数的数组CH ch;
} snake;struct Food {COOR fcr;//食物坐标int flag;//1标示没有食物,需要生成食物
} food;int main() {InitGame();//创建窗口while (1)//暂停{while (!_kbhit()){if (food.flag == 0) {FoodCool();}cleardevice();FoodPaint();SnakeMove();//蛇的移动SnakeDraw();//绘制蛇Sleep(300);EatFood();GameBreak();}SnakeDirection();}return 0;
}void InitGame() {srand((unsigned int)time(NULL));//产生随机的种子initgraph(640, 480);setbkcolor(WHITE);//定义颜色cleardevice();//刷到背景去char ch[100];//图片snake.scr[0].x = 0;//蛇开始出现的坐标snake.scr[0].y = 0;//蛇出现的坐标snake.n = 1;//蛇开始的节数snake.ch = right;food.flag = 0;//没有食物}void SnakeDraw() {//绘制蛇setlinecolor(GREEN); //设置蛇边缘的线条颜色setfillcolor(RED); //设置蛇身的颜色//遍历数组for (int i = 0; i < snake.n; i++) {fillrectangle(snake.scr[i].x, snake.scr[i].y, snake.scr[i].x + N, snake.scr[i].y + N); //根据蛇的当前长度,创建蛇身,} }//蛇移动
void SnakeMove()
{for (int i = snake.n - 1; i > 0; i--) {snake.scr[i].x = snake.scr[i - 1].x;snake.scr[i].y = snake.scr[i - 1].y;}switch (snake.ch) {case up:snake.scr[0].y -= N;break;case down:snake.scr[0].y += N;break;case left:snake.scr[0].x -= N;break;case right:snake.scr[0].x += N;break;default:break;}
}void SnakeDirection()
{switch (_getch()){case 72:if (snake.ch != down)snake.ch = up;break;case 80:if (snake.ch != up)snake.ch = down;break;case 75:if (snake.ch != right)snake.ch = left;break;case 77:if (snake.ch != left)snake.ch = right;break;default:break;}
}
//生成一个食物
void FoodCool()
{srand((unsigned)time(NULL));food.fcr.x = rand() % 32 * N;food.fcr.y = rand() % 24 * N;food.flag = 1;
}void FoodPaint()
{setfillcolor(BLUE);fillroundrect(food.fcr.x, food.fcr.y, food.fcr.x + N, food.fcr.y + N, N, N);
}
//食物的坐标和蛇头坐标的重合
void EatFood()
{if (snake.scr[0].x == food.fcr.x&&snake.scr[0].y == food.fcr.y)//食物的坐标和蛇头坐标的重合{//节数增加snake.n++;food.flag = 0;}
}//判断游戏退出
void GameBreak()
{//撞墙 if (snake.scr[0].y < -1 || snake.scr[0].y>471 || snake.scr[0].x < -1 || snake.scr[0].x>631){//退出GameOver();}for (int i = snake.n - 1; i > 0; i--){if (snake.scr[0].x == snake.scr[i].x&&snake.scr[0].y == snake.scr[i].y){//退出GameOver();}}}void GameOver()
{cleardevice();settextcolor(GREEN);settextstyle(50, 0, L"黑体");outtextxy(200, 200, L"game over");Sleep(2000);exit(0);
}
C++贪食蛇代码亲测有效相关推荐
- Python3飞机大战全代码(亲测OJBK)
以下是亲测Python飞机大战全部代码,在保证有pygame环境支持并且有Python3解释器的话完全没问题! 如果大家喜欢的话麻烦点个赞! 当然没有图片的可以给小编评论留下自己的qq号并且点个赞,晚 ...
- 天猫30个店铺签到领喵币代码 亲测可用
天猫30个店铺签到领喵币代码 准备工作: 需要使用360极速浏览器或chrome浏览器 这个代码是自动逛30店铺 领取喵币 运行代码后 不要窗口化页面 步骤如下: 第1步:浏览器打开https://m ...
- 【小算法】二分图匹配之匈牙利算法详解(图例说明,代码亲测可用)
在软件开发领域,任务指派和数据关联是一种常见业务需求,比如买卖订单的匹配,共享出行的人车匹配,及自动驾驶领域中目标追踪. 这都牵扯到一种技术,那就是数据关联,而匈牙利算法就是解决此类问题最典型的算法, ...
- 【Excel VBA】用datediff函数计算两个日期的间隔,实例代码亲测好用
纲举目张 说明 代码code 使用说明 说明 前一段时间在CSDN上回答了一位朋友的提问,其中就用到了datediff函数.个人认为这个自带的函数功能很强大,但是了解的人很少,我在最开始写一写功能的时 ...
- sd敢达g世纪android,SD敢达G世纪 世界/超越世界 安卓模拟器金手指代码亲测有用...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 先说下我用的是安卓ppsspp模拟器 手机手机是小米3(开发版) _S ULJS-00363 (世界) _G SD敢达 _C1 金钱最大 _L 0x212 ...
- 微信小程序生成页面分享二维码(代码亲测有效)
/*** 获取不限制的小程序码(没有数量限制)** @param accessToken* @param page* @return*/public void getUnlimitedQRCode(S ...
- idea svn切换分支像eclipse一样主干覆盖分支代码(亲测有效)
1.//在idea中svn切换到新分支:[vcs] -> [subversion] -> [update file]. 修改其中的svn路径即可 类似eclipse中team->sw ...
- Python 简易版贪食蛇(源代码)
Python 简易版贪食蛇 简易版贪食蛇代码如下,直接运行即可. 1. 效果图 2.源代码 源代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*-im ...
- pytorch用多层感知机实现鸢尾花3分类(亲测可用)
pytorch用多层感知机实现鸢尾花3分类(亲测可用) 泪目了,家人们 我终于能交出点东西了 这是上课的要求,不能直接用库,不能用sklearn函数,必须用多层感知机!而且要3分类,太难了. 鸢尾花分 ...
最新文章
- 细说浏览器特性检测(2)-通用事件检测
- UIApplicaton详情
- C# delegate
- vue项目设置img标签的默认图片
- Mathematica数据处理(11)--标签
- SystemVerilog搭建验证平台使用DPI时遇到的问题及解决方案
- 陆续放出各种安装及配置文档
- 【ArcGIS风暴】ArcGIS Editor for OSM中文教程(2):下载及加载OSM数据
- 实例对象的索引的方法
- 风控贷中环节应该监控哪些风险指标
- 【OpenCV】直方图
- 怎样HTML做图片画廊,42个jQuery图片画廊插件
- vue2整合echarts5.0
- Linux 驱动 IIC_MPU6050
- fcitx 添加输入法但并没有输入候选项
- 复习————吃饭睡觉打豆豆
- 角色和武器Shader特效开发
- Android自定义View——实现字母导航栏
- Excel中的数字格式与文本格式进行转换
- 6-7 BMI计算(类与对象) (10分)