jeecg 做网站seo专业优化方法
在数字娱乐领域,Google小恐龙(T-Rex Runner)以其简单而上瘾的游戏机制赢得了广泛的关注和喜爱。这款内置于Chrome浏览器的离线小游戏,不仅为用户带来了乐趣,也激发了开发者们对其进行各种创新和扩展的灵感。本文将介绍一种基于C51单片机和OLED12864显示屏实现的Google小恐龙游戏。尽管受限于12864显示屏的显示特性,我们的实现依然能够展示出小恐龙的基本动作——行走和跳跃,尽管界面的流畅度和清晰度有所限制。
Proteus仿真的界面如下:
部分代码如下:
#include <reg52.h>
#include <intrins.h>
#include "oledxs.h"
#include "oledxkl.h"//图片字模存放在位置
#define uchar unsigned char//用uchar表示unsigned char类型
#define uint unsigned int//用uint表示unsigned int类型
#define LEFT 2//方向定义:左
#define RIGHT 3//方向定义:右extern uchar code BMPclr[];//图片清屏用
extern uchar code BMP1[];//图片外部变量什么,小恐龙1
extern uchar code BMP2[];//图片外部变量什么,小恐龙2
extern uchar code BMP3[];//图片外部变量什么,云
extern uchar code BMP4[];//图片外部变量什么,树
uchar bx,by,bmx,bmy;//图片坐标,图片移动坐标
uchar upflag,downflag;//跳跃状态标志,上升状态,下落状态
uint v;sbit LEFTkey = P2^2;//按键左
sbit RIGHTkey = P2^1;//按键右
sbit UPkey = P2^0;//按键上
sbit DOWNkey = P2^3;//按键下
uint key_up=1;
void keyscan();
void BMPmove(uchar BMPx1,uchar BMPy1,uchar BMPx2,uchar BMPy2,uchar *BMPn,uchar BMPfx);//图片循环移动
//6个形参分别为:图片起始列坐标,起始页坐标,结束列坐标,结束页坐标,图片名,移动方向
void main(void)
{bx=0;by=4;bmx=0;upflag=0;downflag=0;OLED_Init(); OLED_Clear(); while(1) {OLED_ShowString(60,0,"score:",8);BMPmove(-64,2,-48,3,BMP3,LEFT);delay_ms(10);BMPmove(-8,4,8,8,BMP4,LEFT);delay_ms(10);v+=1;OLED_ShowNum(100,0,v,3,8);Xianshi_Tupian(bx,by,bx+32,by+4,BMP1); //生成图像delay_ms(10);Xianshi_Tupian(bx,by,bx+32,by+4,BMP2); //生成图像delay_ms(10);if(upflag == 0 && downflag == 0) keyscan();if(upflag == 1)//上升状态{if(by == 0){upflag=0;downflag=1;}if(by>=1){Xianshi_Tupian(bx,by+3,bx+32,by+4,BMPclr);by--;}}if(downflag == 1)//下降状态{if(by == 4){downflag=0;}if(by <=3){Xianshi_Tupian(bx,by,bx+32,by+1,BMPclr);by++;}}}}void keyscan()
{if(UPkey == 0 && key_up==1){delay_ms(10);key_up=0;if(UPkey == 0){ upflag=1;}}else if(UPkey==1) key_up=1;if(LEFTkey == 0 && key_up==1){delay_ms(10);key_up=0;if(LEFTkey == 0){ Xianshi_Tupian(bx+32-8,by,bx+32,by+8,BMPclr);bx-=8;if(bx<=0) bx=128;}}else if(LEFTkey==1) key_up=1;if(RIGHTkey == 0 && key_up==1){delay_ms(10);key_up=0;if(RIGHTkey == 0){ Xianshi_Tupian(bx,by,bx+8,by+8,BMPclr);bx+=8;if(bx>=128) bx=0;}}else if(RIGHTkey==1) key_up=1;
}void BMPmove(uchar BMPx1,uchar BMPy1,uchar BMPx2,uchar BMPy2,uchar *BMPn,uchar BMPfx)
{if(BMPfx==LEFT){if(bmx<=0) bmx=128;if(bmx>=8){Xianshi_Tupian(bmx+BMPx1,BMPy1,bmx+BMPx2,BMPy2,BMPn);Xianshi_Tupian(bmx+BMPx2,BMPy1,bmx+BMPx2+BMPx2-BMPx1,BMPy2,BMPclr);bmx-=8;}}if(BMPfx==RIGHT){if(bmx>=128) bmx=0;if(bmx<=128){Xianshi_Tupian(bmx+BMPx1,BMPy1,bmx+BMPx2,BMPy2,BMPn);Xianshi_Tupian(bmx+BMPx1,BMPy1,bmx+BMPx2+BMPx2-BMPx1,BMPy2,BMPclr);bmx+=8;}}
}
PS:感兴趣的同学可以到我的资源下载全部程序。
尽管在OLED12864显示屏上实现Google小恐龙游戏面临一些挑战,如显示延迟和界面清晰度,但我们的项目依然成功地展示了小恐龙的基本动作。这种尝试不仅证明了C51单片机在简单游戏开发中的潜力,也为未来在更高性能显示屏上的进一步开发奠定了基础。
在未来,随着显示技术的不断进步,我们有理由相信,类似的游戏将能够在更小、更高效的设备上实现更加流畅和清晰的显示效果。同时,这也为开发者们提供了一个探索和创新的平台,激发他们在有限的硬件资源下实现更复杂功能的动力。
最终,Google小恐龙游戏的这一实现不仅是对经典游戏的一种致敬,也是对技术限制的一种挑战。我们期待在未来看到更多类似的项目,不仅在技术上有所突破,更在用户体验上带来新的惊喜。