SSD1306显示屏–躲避类游戏


要求:

​ 使用Arduino控制OLED显示屏SSD1306(proteus中搜索UG-2864HSWEG01),再连接几个按钮。观察下面视频中的游戏,在Arduino上编程实现相同效果:效果视频

注:题目来自HBUE的硬件编程考题,本代码仍有缺陷,显示器闪动较严重,且不够简洁。此代码电路仅供学习交流使用,转载使用时请注明来处。

/*
SOFTWARE: Proteus 8 Professional
CSDN: 空白之子
公众号:硬核开发(正在建设中)
*/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,B00000001, B11000000,B00000001, B11000000,B00000011, B11100000,B11110011, B11100000,B11111110, B11111000,B01111110, B11111111,B00110011, B10011111,B00011111, B11111100,B00001101, B01110000,B00011011, B10100000,B00111111, B11100000,B00111111, B11110000,B01111100, B11110000,B01110000, B01110000,B00000000, B00110000 };#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid setup()
{Serial.begin(9600);display.begin(SSD1306_SWITCHCAPVCC);display.display();display.clearDisplay();pinMode (2, INPUT);
}int i, j, k, temp;
void loop()
{temp = rand() % 128;for(i = temp + 64; i > -10;  i -= 3)// 调节3这个数字可以改变速度{j = 15;if (digitalRead(2) == HIGH)j =  48;display.fillCircle(18, j, 10, WHITE);display.drawRect(i, 5, 15, 20, WHITE);display.display();display.clearDisplay();if (j == 15 && i >= 5 && i <= 25){display.setTextSize(2);display.setTextColor(WHITE);display.setCursor(0,0);display.println("Game Over!");display.display();display.clearDisplay();while (1);}}
}

电路

效果


SSD1306显示屏--躲避类游戏相关推荐

  1. cocos cr躲避类游戏的暂停、继续、重新开始_社团班级团建游戏活动安排

    学生社团出游怎么安排?如何提高团队的凝聚力?如何增强大家的参与度? 嗨玩君这里拿出一次在校期间所在学生会某部门出游来做举例说明,希望对你有所帮助. 分组: 作为学生会内的一个小部门,本身内部就没有其他 ...

  2. 飞机躲避小游戏---是男人就撑100秒的制作

    飞机躲避小游戏---是男人就撑100秒的制作 EmilMatthew(EmilMatthew@126.com) 摘要:  可以将这个游戏的整体运作看成一个粒子系统,再加上子弹和飞机的碰撞判定即可.简单 ...

  3. 1Unity3D-开发潜行类游戏案例个人总结--俺的游戏视频上传到b站啦!

    本学期的数据可视化课程提供了丰富的选题,我选择我比较感兴趣的游戏制作,使用Unity2020版本进行开发,在这个过程中学习收获了许多. 我的游戏视频已经更新到bilibili https://www. ...

  4. 极品飞车14:热力追踪3 for Mac(赛车竞速类游戏)

    极品飞车热力追踪 Mac 特别版是一款速度与激情的竞速类的赛车游戏,极品飞车14热力追踪3 Mac版完美存档内容,让您拥有车手和警察全部技能,所有车辆赛事全部达成,让您一跃成为最强选手! 点击下载极品 ...

  5. 在3D生存类游戏中加入人工智能

    2016年AlphaGo的横空出世,吹响了人工智能在游戏领域攻城掠地的号角.短短三年间,星际.Dota2.德州扑克.麻将相继被AI攻克.随着OpenAI Five和AlphaStar血洗天梯竞技场,游 ...

  6. 基于Java多线程的打怪升级类游戏设计与开发

    摘要:本文论述了通过JAVA多线程.基于JAVA Swing的GUI图形用户界面设计.IO输入输出流.JDBC技术,实现了游戏系统的UI设计.游戏数据的存储.关卡的设置.用户头像的上传与更改.游戏数据 ...

  7. unity2018关联不到vs_律道|蓝月传奇VS烈焰武尊:角色扮演类游戏独创性如何认定?...

    作者:天达共和律师事务所律师 谢平 ["蓝月传奇"VS"烈焰武尊"] "我是渣渣辉"这句网络流行语同时也带火了<蓝月传奇>.&l ...

  8. 格斗类游戏和休闲类游戏不同

    前阵子我开发了Match3D, 一个可以把三维动画输出成为swf的工具, 而且实现了swf渲染的实时三维角色动画, 这可以说是我真正推出的第一个flash第三方软件, 其实这以前, 我曾经开发过几个其 ...

  9. 牌类游戏使用微服务重构笔记(四): micro框架使用经验

    项目依赖 推荐使用go module, 我选择go module的最主要原因是足够简单,可以脱离gopath,就跟写nodejs一样,随便在一个地方新建一个文件夹就可以撸代码了,clone下来的源码也 ...

最新文章

  1. vim查找/替换字符串
  2. 解决Failed to load class org.slf4j.impl.StaticLoggerBinder
  3. 金蝶K3,如何添加其它出库单出库类型
  4. 什么是回调地狱以及promise的链式调用和aysnc/await
  5. 京东最新点击率预估模型论文学习和分享
  6. 谷歌虚拟服务器申请,【美国podserver.info】免费300M虚拟主机空间申请使用教程
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的闲置物品交易平台
  8. Java Web乱码分析及解决方式(一)——GET请求乱码
  9. 永洪BI-相关小知识点
  10. 信息系统项目管理师思维导图
  11. 婚姻中,不去表达爱,比不爱更可怕
  12. 山东腾飞科尔沁 国稻种芯·中国水稻节:内蒙沙漠万亩水稻
  13. C# 串口助手中英文显示问题
  14. 产品运输和使用振动环境的分类
  15. [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
  16. Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition
  17. html标签onload,支持onload事件的HTML标签有哪些
  18. 电脑一般预装access吗_我告诉你惠普预装office是永久的吗
  19. 从本质如何理解机器学习
  20. 如何做一个基于微信共享会议室预约小程序系统毕业设计毕设作品

热门文章

  1. 2009.7.30-8.4生活小结
  2. php empty 和空字符串区别
  3. LaTeX调整公式中部分字号及行距
  4. (openCV 十)ML_SVM
  5. 单片机运算能力与PC运算能力PK
  6. 一文看懂财务数据的分析方法
  7. 618营销新动向:Swisse年轻化产品教育成电商战场新突破口!
  8. ai怎么取消颗粒效果_怎么用AI制作粒子消散效果字体?
  9. 精心整理的Java学习顺序流程和学习方法
  10. 求和函数 sum详解