最近觉得在android上开发游戏是一件很有趣的事情,所以查找了一些资料,自己做出了一个简单俄罗斯方块游戏,现将其总结如下:
1、基础数据模型
一个俄罗斯方块都是以一个4*4的二维数组来存储的,在我的demo游戏中,一共有7种方块类型: I S Z J O L T七种类型。见下图(图形就暂免了)。每种类型都有四种旋转状态, 如何在一个4*4的二位数组表示呢?可以用0和1来表示,1表示该小单元格需要显示,0表示该小单元格不需要显示。
设置屏幕为320*480,每个小单元格是20像素,这样宽就是COLS=16,高就是ROWS=24。
2、涉及到的几个JavaBean
2.1 Shape:把每种图形抽象出来为一个对象,具有的属性是
int的 left(x方向)和top(y方向)、
int的 status 旋转状态,可选择的值是0,1,2,3 默认是0
int[][] body 存储四种旋转状态的数据
int LEFT = 1, RIGHT = 2, DOWN = 3, ROTATE = 4
Shape的最基本方法是checkValue()和checkBound(),checkValue()方法是检查某个单元格的值是1还是0,可传入status,x,y或经过计算后的x,y的值,status作为属性可直接获取。
public boolean chekValue(int x, int y){......}
或 public boolean checkValue(int xyValue){........}
Shape的checkBound()需要根据执行的动作和地面的单元格的条件来检查是否越界,如果地址没有越界,则返回false,否则返回true。
public boolean checkBound(int action, Ground ground){.........}
Shape的drawMe()方法,该方法应该是无参数的,主要的逻辑是把4*4中值为1的单元格在画布上画出来。
public void drawMe(){.............}
Shape还具有四个玩家可以操作的动作方法:moveLeft() moveRight() moveDown()和rotate()四种基本方法,对应模拟器上的四个方向键。
public void moveLeft(){................}
public void moveRight(){................}
public void moveDown(){.........}
public void rotate(){................}
2.2 Ground:地面类 就是各个小单元格堆放起来的那个地面,我们也把它抽象成为一个JavaBean,经过分析,它也应该具有如下的属性和方法。
int[][] body 这个body就是面板的最大面积COLS * ROWS =16*24
Ground也应该具有最基本的方法checkValue(),这个方法和Shape的方法大同小异,值为1返回true,值为0返回false,但是实现的具体逻辑和使用场景有较大的不同,输入参数可以使x,y ,也可以是left, top, x,y
public boolean checkValue(int x, int y){.........}
public boolean checkValue(int left, int right, int x,int y){.........} 二者实现一个即可。
Ground应该有一个addShape()的方法,用于接纳到达地面的Shape(),
public void addShape(int x, int y, Shape shape){......}
它应该有一个drawMe()的方法,显示他目前已经接纳且未消行的小单元格。
public void drawMe(){..........}
另外它应该有消行和统计分数的方法removeRows()
public void removeRows(){.........}
2.3 定义一个GameView,用来显示Shape和Ground的图形变化,需要重写的方法有
onDraw():主要是画Shape和Ground
onKeyDown():处理方向键按下的事件
在它的构造函数GameView()里面需要实现小单元格的静态资源的获取,
调用setFocusable(true); 以显示图形
在正式运行时需要执行定时器,以3秒钟不停刷新页面的数据。
2.4 MainActivity 将系统的标题栏去掉,调用
//以下去掉标题和全屏
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
然后调用GameView。
相关推荐
在Android平台上进行游戏开发是一项有趣且具有挑战性的任务,尤其当你选择实现经典游戏如俄罗斯方块时。这个项目为你提供了一个完整的Android版俄罗斯方块的源代码,这将帮助你理解游戏逻辑、UI设计以及Android应用...
不错的毕业设计、课程设计、练手c语言项目:俄罗斯方块.rar 不错的毕业设计、课程设计、练手c语言项目:俄罗斯方块.rar 不错的毕业设计、课程设计、练手c语言项目:俄罗斯方块.rar 不错的毕业设计、课程设计、练手...
这是一个微信小游戏项目源码,是经典怀旧的俄罗斯方块游戏,适合新手入门参考学习,下面还有↓ 使用微信开发工具选择小游戏导入即可打开,可编译运行,请放心下载, 相关指导教程请看作者发表的以下文章: ① 微信...
本篇将详细讲解如何使用C语言来实现经典的小游戏——俄罗斯方块。通过这个项目,我们可以深入理解C语言的基本结构,同时锻炼逻辑思维和编程技巧。 首先,我们要了解俄罗斯方块的基本规则。游戏由不同形状的方块组成...
在本项目中,"Java:俄罗斯方块JPanel版"是一个使用Java编程语言实现的经典游戏——俄罗斯方块的版本,它基于Java Swing库中的JPanel组件进行开发。这个项目不仅展示了基本的游戏逻辑,还涉及到了图形用户界面(GUI...
**Python经典小游戏:俄罗斯方块** 俄罗斯方块是一款广受欢迎的益智游戏,它由苏联的阿列克谢·帕基特诺夫于1984年发明。在这个游戏中,不同形状的方块(通常由四个小方格组成)会从屏幕顶部逐渐降落到下方,玩家...
【作品名称】:基于Java实现经典小游戏:俄罗斯方块,可用键盘操作,也可用鼠标点击进行操作 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目...
在本课程设计中,我们将深入探讨如何使用Python编程语言实现两个经典的小游戏——俄罗斯方块与扫雷。Python因其简洁明了的语法和丰富的库支持,成为开发小型游戏的热门选择。下面,我们将分别讨论这两个游戏的设计...
Java毕业论文范例:俄罗斯方块源码及文档,适合学习的Java小游戏源码,俄罗斯方块的 Java 实现实例,包括了各个游戏控制类,比如控制面板类,继承自JPanel.上边安放预显窗口、等级、得分、控制按钮,主要用来控制...
【Pygame游戏源代码:俄罗斯方块】 Pygame是一个基于Python的开源库,专为创建2D游戏设计。它提供了一系列的功能,包括图形绘制、事件处理、音乐播放等,使得开发者能够快速构建游戏框架。本项目是使用Pygame实现的...
Java 毕业论文:俄罗斯方块游戏设计源码资料,学习了俄罗斯方块中的人工智能技术,按照面向对象的软件工程设计方法,分析俄罗斯方块游戏中出现的每一个类,指出类名及其功能,并指出类中的成员变量和成员函数。...
JavaScript技术:俄罗斯方块WEB版
python基于pygame的俄罗斯方块小游戏源码。python基于pygame的俄罗斯方块小游戏源码。python基于pygame的俄罗斯方块小游戏源码。python基于pygame的俄罗斯方块小游戏源码。python基于pygame的俄罗斯方块小游戏源码。...
【标题】"C语言大作业:俄罗斯方块小游戏"是一个基于C语言编程的项目,旨在让学生运用基础的C语言知识来实现一个经典的游戏——俄罗斯方块。这个项目的目的是提升学生在程序设计、逻辑思维和问题解决方面的能力。 ...
接着,我们来看俄罗斯方块: 1. **方块生成与旋转**:俄罗斯方块的核心是各种形状的方块随机生成并允许玩家旋转。开发者需要设计一个方块形状库,并实现旋转逻辑,保证旋转后的方块不会超出游戏区域。 2. **下落动画...
《俄罗斯方块》是一款经典的游戏,自1984年首次亮相以来,它以其独特的魅力和无尽的挑战性在全球范围内赢得了无数玩家的喜爱。这款由苏联程序员阿列克谢·帕基特诺夫设计的游戏,以其简洁的规则、深度的策略和令人...
c++ 小游戏俄罗斯方块
俄罗斯方块(图形界面pygame实现);俄罗斯方块(图形界面pygame实现);俄罗斯方块(图形界面pygame实现);俄罗斯方块(图形界面pygame实现);俄罗斯方块(图形界面pygame实现);俄罗斯方块(图形界面pygame实现);俄罗斯...
本文将围绕“android俄罗斯方块”这一主题,深入探讨其设计与实现,包括游戏逻辑、界面设计、特殊功能以及用户体验优化等方面。 1. **游戏逻辑** 俄罗斯方块的核心是其游戏逻辑,它基于7种基础形状(T、S、Z、I、O...