最近闲来无事,觉得无事干,在网上寻找一些玩意。偶尔看到别人写的qt开发贪吃蛇小游戏。所以就想着自己写一个玩玩。我做了2版,第一版的时候没过脑子。以为还是挺简单的,但是后来发现在转弯的时候有问题,所以放弃的第一版,第二版是使用数组进行存储蛇的身体,移动的时候就是删除第一个字节,在末尾增加一个来实现移动。
来看下代码:
snake:
初始化
使用数组来存储蛇的身体

 this->resize(800,600);snake_List<<QRect(0,0,SNAKE_WIDTH,SNAKE_HEIGHT)<<QRect(15,0,SNAKE_WIDTH,SNAKE_HEIGHT);Fruit=QRect((qrand()%(width()/SNAKE_WIDTH))*SNAKE_WIDTH,     //产生随机数字(qrand()%(height()/SNAKE_HEIGHT))*SNAKE_HEIGHT,SNAKE_WIDTH,SNAKE_HEIGHT);m_pTime=new QTimer(this);m_pTime->stop();m_pTime->setInterval (500) ;//设置定时周期,单位:毫秒connect(m_pTime,SIGNAL(timeout()),this,SLOT(ontimeout()));

绘制图像:

 QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);painter.setBrush(Qt::red);foreach(QRect r,snake_List){//画出蛇身painter.drawRect(r);}painter.drawRect(Fruit);

控制方向:

switch (event->key()) {case Qt::Key_Up:if(strKey=="Down") break;  //如果是反方向则退出strKey="Up";break;case Qt::Key_Down:if(strKey=="Up") break;strKey="Down";break;case Qt::Key_Right:if(strKey=="Left") break;strKey="Right";break;case Qt::Key_Left:if(strKey=="Right") break;strKey="Left";break;default:break;}

定时器执行:

head=snake_List.first();if(head.y()<0||head.y()>this->height()||head.x()>this->width()||head.x()<0){QMessageBox msgBox;msgBox.setText("You Die!");msgBox.exec();ResetSnake();}if(strKey=="Up"){head.setX(snake_List.last().x());head.setY(snake_List.last().y()-SNAKE_HEIGHT);}else if(strKey=="Down"){head.setX(snake_List.last().x());head.setY(snake_List.last().y()+SNAKE_HEIGHT);}else if(strKey=="Left"){head.setX(snake_List.last().x()-SNAKE_WIDTH);head.setY(snake_List.last().y());}else if(strKey=="Right"){head.setX(snake_List.last().x()+SNAKE_WIDTH);head.setY(snake_List.last().y());}head.setSize(QSize(SNAKE_WIDTH,SNAKE_HEIGHT));if(head!=Fruit){snake_List.takeFirst(); //删除第一个  删除尾部}else{Fruit=QRect((qrand()%(width()/SNAKE_WIDTH))*SNAKE_WIDTH,(qrand()%(height()/SNAKE_HEIGHT))*SNAKE_HEIGHT,SNAKE_WIDTH,SNAKE_HEIGHT);}snake_List.append(head); //增加第一个 //增加头部update();

上面只写了部分核心代码。
来看下效果图。

博主是个手残党。。。速度太快玩不来。。
ヾ( ̄▽ ̄)ByeBye
有需要源码的可以到这里下载

Qt制作贪吃蛇小游戏相关推荐

  1. C# 制作贪吃蛇小游戏,最简单的实现

    C# 制作贪吃蛇小游戏 目录 画蛇 实现蛇的上下左右移动 随机生成目标物 开始游戏 计分 重新开始 增加难度 死亡判定 1.1 画蛇的一节 Class Element()Graphics g;publ ...

  2. JavaScript制作贪吃蛇小游戏

    目录 效果展示 原理分析 Game.js文档 Snake.js文档 Food.js文档 附上源代码 写了这么久的代码 是否你和我一样感到枯燥乏味了呢? 是否没有前进的动力了呢? 别忘了当时的你踌躇满志 ...

  3. 51制作贪吃蛇小游戏,附带Proteus仿真

    一.代码解读 一个按钮来启动游戏的开始,开始以后LCD1602上显示当前的关卡和得分,当长到一定长度后会进入下一个关卡,每个关卡移动的速度不一样(越到后面速度越快,用到定时器) 有关蛇和食物里的属性都 ...

  4. python制作贪吃蛇小游戏,畅玩无限制

    前言 大家早好.午好.晚好吖 ❤ ~ 现在这年头,无论玩个什么游戏都有健康机制, 这让我们愉悦玩游戏得步伐变得承重起来, 于是无聊之下我写了个贪吃蛇小游戏,来玩个快乐 代码展示 导入模块 import ...

  5. 基于html5贪吃蛇小游戏,使用HTML5 Canvas制作贪吃蛇小游戏

    近重要在研究OAuth2,等demo完成了,会给大家来一个专题分享. 看到我身边的一个同事在玩 蛇蛇争霸 感觉蛮有意思的,这里找了一个 贪吃蛇的游戏 分享给大家. 按理说canvas与其应用是老生常谈 ...

  6. WPF制作贪吃蛇小游戏

    初学WPF,需要一个小程序来锻炼自己,而贪吃蛇是每一个小白(包括我自己)必学的经典案例,此文就来介绍一下,接近完美的贪吃蛇是如何制作的 . . . 学习源于赵庆明老师的课程(腾讯课堂) 此文将只对游戏 ...

  7. 利用Qt实现贪吃蛇小游戏

    1.项目概述 1.1项目目标和主要内容 1)学习GUI图形界面的设计,基于C++ QT框架,创建交互友好的应用程序: 2)实现贪吃蛇游戏基本功能,屏幕上随机出现一个"食物",称为豆 ...

  8. Unity制作贪吃蛇小游戏

        从开始学习到现在也做了不少小游戏,但是很多都堆积再同一个项目中,并且还有许多不完善之处,所以最近会逐渐发上来一些之前做的小游戏,希望对大家有所帮助. 今天发上来的是最开始做的一个,也是挺经典的 ...

  9. 大学生的小乐趣:html画布制作贪吃蛇小游戏

    源代码已存放在github上:https://github.com/WYKXLDZ/CollegeJoy/tree/master/snake 最终效果: 做贪吃蛇游戏需要Html5,部分Css美化,重 ...

  10. Qt入门开发__贪吃蛇小游戏

    qt是一个由Qt Company于1991年开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序(比如控制台工具和服务器).在图形用户界面开发相比MFC更加 ...

最新文章

  1. 停课不停学,大型网课直播翻车现场合集,你别笑,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈...
  2. Hadoop:HDFS NameNode内存全景
  3. MyEclipse 8.0 GA 初体验
  4. oracle pdb 表空间,Oracle 12c CDB 和 PDB 表空间管理和配置 说明
  5. ES6新特性_Promise封装读取文件---JavaScript_ECMAScript_ES6-ES11新特性工作笔记025
  6. jQuery.param() 函数详解
  7. 酒后谈IT,那些术语大妈都能秒懂!
  8. 【回眸】LDA算法(数据处理与智能决策)
  9. 标准正态分布怎么算_标准正态分布函数的快速计算方法
  10. 绿幕抠图支持网页、PPT背景类型
  11. 【自习自习自习自习自习】
  12. QQ5.1 去广告显IP新春完美版【木子李作品】
  13. GD2016noip获奖名单
  14. 计算机基础知识教程excel试题,计算机基础知识试题
  15. 索尼开发新传感器为激光雷达提供助力,用于自动驾驶和其他应用
  16. 计算机类专业英文缩写,计算机专业英文缩写词汇汇总
  17. 全球与中国Adobe渠道合作伙伴市场现状及未来发展趋势
  18. Android不错的图片压缩方法,圆我大厂梦
  19. 量化交易接口怎么自动选股票?
  20. Springboot配置两个不同IP的Cas的客户端client

热门文章

  1. 汉罗塔python_基于Python的汉诺塔算法
  2. tp3.2 隐藏index.php,thinkphp3.2.3隐藏index.php入口文件
  3. python info什么意思_python中log info 是什么文件
  4. spark 动态预加载数据_Spark+TDengine 在中国电信电力测功系统监控平台上的应用实践...
  5. 计算机对电器的影响论文,突然断电到底伤不伤电器:这是答案
  6. linux go missing git command,go: missing Git command的解决办法
  7. easypr arm linux,zhangdy
  8. 矩阵拼接_numpy 矩阵拼接
  9. python 遗传算法书籍推荐_遗传算法(1) - Python实现
  10. android 基础布局