基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

这篇具有很好参考价值的文章主要介绍了基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述:

本项目基于 正点原子mini(stm32f103RCT6) 2.8 寸的 ALIENTEK TFTLCD 模块 二轴摇杆模块 的俄罗斯方块小游戏。(学习过程中的项目自测)

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

我的问题总结:

1.随机数生成我是用RTC的时钟自己写的,用srand+rand 只能生成一次。

2.并行程序(有什么更好的方法)。

3.觉得我哪里需要改进或者有什么见解可以评论私信。

4.需要全部程序联系我吧(不知道咋上传)。

硬件方面:

二轴摇杆模块:由两个变阻器和一个弹性按键组成,通过2个模拟输入和1个数字输入来判断摇杆的状态。

LCD 模块:TLCD 模块采用 16 位的并方式与外部连接。

单片机内核:stm32f103RCT6(正点原子的mini)。

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)硬件确定后,摇杆模块用杜邦线连接(因为是借的弹性按键没用了所以只用了ROX,ROY),LCD模块插在对应位置(因为都是正点原子的模块)。下图是相关引脚说明

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 

软件方面:

分成三部分:摇杆模块模拟输入的状态获取        lcd的显示        俄罗斯方块运行的部分

随机数部分:

获取RTC的时钟再进行随机数的生成。(处理的不好待优化)

摇杆模块模拟输入的状态获取 :

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

如上图的通过ADC1获取PA3,PA4的ROX与ROY的姿态。

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 lcd的显示:

主要分成两块:icd的初始化(驱动器ILI9241初始化)   icd画点

初始化:对LCD用到的引脚初始化:PC6-PC10    PB0-PB15

                ILI9341:通过对其写命令设定LCD的相关参数~参考ILI9341的使用手册

icd画点:

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

完成画点后再对其进行扩展:我用到画矩形和画⚪。

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 俄罗斯方块运行的部分:

在俄罗斯方块部分流程图如下:

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

在LCD和摇杆部分则是之前两个部分的扩展,主要分析后面4个部分。

移动部分:以下是生成和清除一个块并在数组中置位。

void	Display_1Block(u16 x,u16 y,u8 r){		//生成一个块 两个之间x,y相差11			内存置位
		
		POINT_COLOR=BLACK;
		LCD_Draw_Circle(x,y,r);
		LCD_Draw_Circle(x,y,r-1);
		LCD_Draw_Circle(x,y,r-2);
		LCD_Draw_Circle(x,y,r-3);
		
		
		LCD_DrawLine(x-(u16)r,y-(u16)r,x-(u16)r,y+(u16)r);
		LCD_DrawLine(x-(u16)r,y-(u16)r,x+(u16)r,y-(u16)r);
		LCD_DrawLine(x+(u16)r,y+(u16)r,x-(u16)r,y+(u16)r);
		LCD_DrawLine(x+(u16)r,y+(u16)r,x+(u16)r,y-(u16)r);
	
		Save_Set_thedata(x,y);
	
}
void	Display_1Block_Reset(u16 x,u16 y,u8 r){		//生成一个块 两个之间x,y相差11			内存复位
		
		POINT_COLOR=WHITE;
		LCD_Draw_Circle(x,y,r);
		LCD_Draw_Circle(x,y,r-1);
		LCD_Draw_Circle(x,y,r-2);
		LCD_Draw_Circle(x,y,r-3);
		
		
		LCD_DrawLine(x-(u16)r,y-(u16)r,x-(u16)r,y+(u16)r);
		LCD_DrawLine(x-(u16)r,y-(u16)r,x+(u16)r,y-(u16)r);
		LCD_DrawLine(x+(u16)r,y+(u16)r,x-(u16)r,y+(u16)r);
		LCD_DrawLine(x+(u16)r,y+(u16)r,x+(u16)r,y-(u16)r);
	
		Save_Reset_thedata(x,y);
	
}

在完成一个块的生成与清除后,移动和翻转则是同理(需要确定number~块的种类 state~块的翻转):

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 之后则要实时确定块的状态(stopway)

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 确定完mode~块的种类 state~块的翻转 stopway~块的状态 hand~摇杆状态开始移动:

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

特殊状态检测(满行清除回补与越界退出):

在每一次生成下一个随即块前,检前测数组的每一行是否满

在每一次生成随机块后,检测警戒线行上是否有被置位

u8 Check_One_Line(u8 y){			//判断一行是否满	return:1~~~满了
		u8 i;
		for(i=1;i<=18;i++){
					if(State_Block[y][i] == 1){
							continue;
					}
					else{
							return 0;
					}
		}
		return 1;
}

u8 Check_Line_Fail(void){						//判断是否超出警戒线			return : 1~~~没超过		0~~~超过fail
		u8 i;
		for(i=1;i<=18;i++){
				if(State_Block[5][i] == 1){
						return 0;
				}
				else{
						continue;
				}
		}
		return 1;

}

综合运行:
将之前的整合在一起

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

 最终结果展示:

基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)

俄罗斯方块视频文章来源地址https://www.toymoban.com/news/detail-479139.html

到了这里,关于基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现俄罗斯方块小游戏。(附完整源代码)

    大家好,我是百思不得小赵。 创作时间:2022 年 5 月 12 日 博客主页: 🔍点此进入博客主页 —— 新时代的农民工 🙊 —— 换一种思维逻辑去看待这个世界 👀 今天是加入CSDN的第1167天。觉得有帮助麻烦👏点赞、🍀评论、❤️收藏 目录 一、游戏背景 二、功能实现 三、效果

    2024年02月03日
    浏览(72)
  • python毕设分享 俄罗斯方块小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 俄罗斯方块小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年02月03日
    浏览(61)
  • 俄罗斯方块小游戏开发

    代码图: 结果图:

    2024年02月04日
    浏览(56)
  • Java小游戏-俄罗斯方块

    摘 要 随着时代的不断发展,个人电脑也在不断普及,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或工作之余休闲娱乐的首选,从最开始的Windows系统自带的黑白棋、纸牌、扫雷等游戏开始,到现在目不暇接的各种游戏,游戏已经成为人们在使用计算机进行工作或

    2024年02月03日
    浏览(54)
  • C语言项目小游戏之俄罗斯方块

    今天给大家带来一个用C语言实现的俄罗斯方块小游戏 游戏截图:       首先我们先创建一个名为mywindows.h的头文件。用来设置我们操作台的各种功能实现 每一个函数的功能都有注释向大家解释,现在给大家放出函数功能的具体实现,博主创建了了个名为mywindows.c的源文件 这

    2024年02月15日
    浏览(47)
  • Vue2模拟俄罗斯方块小游戏

    目录 一、效果展示 二、代码分享 三、原理分析 3.1、界面搭建 3.2、方块创建 3.3、方块旋转 3.4、方块移动 3.5、移动判断 3.6、下落判断与清除 3.7、得分计算  工具函数:   主界面的20X10,类似贪吃蛇,副界面的随机方块,则是4x4,都是双重for循环。初始化的时候调用gameFram

    2024年02月08日
    浏览(51)
  • 用JS写一个《俄罗斯方块》小游戏

    最近网上上映一部名叫《俄罗斯方块》电影,想起自己学习JS时,编写《俄罗斯方块》小游戏程序作为练习,现在分享一下,看能不能蹭一下热度。: ) ↑:旋转方块 ↓:加快方块下坠 ←:左移方块 →:右移方块 D:直接让方块坠底

    2023年04月09日
    浏览(51)
  • 基于Python的PyGame的俄罗斯方块游戏设计与实现

    近年来,随着游戏产业的突飞猛进,游戏玩家的技术也是与日俱增,当你看见游戏高手完美的表演时,你是否想过我也能达到那种水平,本程序用Python语言编写俄罗斯方块,左侧显示正在运行的游戏,右边显示下一个出现的形状、等级和积分等。游戏运行时随着等级的提高而

    2024年02月04日
    浏览(56)
  • [C#] 简单的俄罗斯方块实现

    一个控制台俄罗斯方块游戏的简单实现. 已在 github.com/SlimeNull/Tetris 开源. 很简单, 一个二维数组存储当前游戏的方块地图, 用 bool 即可, true 表示当前块被填充, false 表示没有. 然后, 抽一个 “形状” 类, 形状表示当前玩家正在操作的一个形状, 例如方块, 直线, T 形什么的. 一个形

    2024年02月13日
    浏览(39)
  • C++实现俄罗斯方块(源码+详解)

    👂 Take me Hand Acoustic - Cécile Corbel - 单曲 - 网易云音乐 源码Debug工具 (1)cppreference.com (主) (2)必应 (bing.com) (3)GPT(主) (4)Google 学习过程中,如果缺少了cppreference,源码将无法跑通 如果缺少了GPT,效率会大大降低 至于Google,Bing,仅供查漏补缺 目录 🌼前言 🤪

    2024年02月13日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包