ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:172.16KB ,
资源ID:876480      下载积分:10 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-876480.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(俄罗斯方块游戏.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

俄罗斯方块游戏.doc

1、石家庄职业技术学院目录摘要2一 游戏设计说明31.1 游戏的设计及实现31.2 游戏流程图设计4二 详细设计42.1参数及界面42.2初始化构造方法52.3 初始化地图62.4生成新方块的方法62.5 旋转方法62.6 判断是否合法方法72.7 消行方法72.8 判断挂方法8三 测试分析8四 设计体会8五 游戏代码10参考文献:18摘要俄罗斯方块游戏运用java实现具有一定功能的游戏软件,主要功能如下:1. 控制对象左右下运动;2. 控制对象旋转;3. 判断对象是否越界;4. 判断对象底下是否到底下或固定对象;5. 判断某一行是否全有对象,然后消一行,加分;6. 判断游戏进行是否挂了,然后自动

2、重新开始,分数清零。关键词:java、俄罗斯方块游戏、对象一 游戏设计说明1.1 游戏的设计及实现本游戏主要有以下5个主要方法:1.MyPanel() 初始化构造方法;2.newmap() 初始化地图;3.newboxs() 生成新方块方法;4.blow() 是否合法方法;5.gobox() 消行方法;1.2 游戏流程图设计开始初始化构造方法初始化地图生成新方块画围墙旋转方法左移方法右移方法下落方法是否合法方法把当前添加map画方块方法消行方法判断挂方法二 详细设计2.1参数及界面 int boxs 方块类型int scoer 分数int boxscore 方块状态int map = new

3、int1323 定义已经放下的方块x=0-11,y=0-212.1游戏界面2.2初始化构造方法开始,初始化方块、分数、地图等。public MyPanel() newboxs();newmap(); Timer timer = new Timer(1000, new TimerListener();timer.start();drawbox();2.3 初始化地图开始游戏时,初始化参数。public void newmap() for (i = 0; i 12; i+) for (j = 0; j 22; j+) mapij = 0; 2.4生成新方块的方法public void newbox

4、s() boxs = (int) (Math.random() * 1000) % 7;boxscode = (int) (Math.random() * 1000) % 4;x = 4;y = 0;if (gameover(x, y) = 1) newmap(); drawbox(); score = 0; JOptionPane.showMessageDialog(null, GAME OVER);2.5 旋转方法通过按来控制对象旋转,如果对象没有越界或附近没有固定对象可以旋转,否侧失效。public void turn() int tempturnState = boxscode;box

5、scode = (boxscode + 1) % 4;if (blow(x, y, boxs, boxscode) = 1)if (blow(x, y, boxs, boxscode) = 0) boxscode = tempturnState;repaint();2.6 判断是否合法方法用来判断对象是否越界、是否继续下去等。public int blow(int x, int y, int boxs, int boxscode) for (int a = 0; a 4; a+) for (int b = 0; b 4; b+) if (shapesboxsboxscodea * 4 + b

6、= 1) & (mapx+ b + 1y + a = 1)| (shapesboxsboxscodea * 4 + b = 1) & (mapx+ b + 1y + a = 2) return 0; return 1;2.7 消行方法如果某一行全有固定对象,则消失某一行;否则不消失。public void gobox() 法 int c = 0;for (int b = 0; b 22; b+) for (int a = 0; a 0; d-) for (int e = 0; e 11; e+) maped = maped - 1; c = 0;2.8 判断挂方法如果堆积满了则挂,并重新开始。

7、public int gameover(int x, int y) if (blow(x, y, boxs, boxscode) = 0) return 1;return 0;三 测试分析运行俄罗斯方块游戏,操作左右下运动、旋转运动没有卡现象,运行正常。分数增加、消行正常。发现游戏一打开就自动开始了,没有考虑这点,使玩家成被动了。四 设计体会本次课程设计主要是运用本学期所学到的Java基础知识来设计一个符合要求的俄罗斯方块游戏,这期间我遇到了很多的困难,发现了很多的问题,正是在解决问题的期间我才慢慢地熟悉了Java的基础知识,才慢慢学会了如何去按照给定的要求设计出合适的java系统。通过本次课

8、程设计,我明白了一个道理:无论做什么事情,都必需养成严谨,认真,善思的工作作风遇到问题最好的办法就是请教别人,因为每个人掌握的情况都不一样,一个人不可能做到处处都懂,必须发挥群众的力量,复杂的事情才能够简单化。这一点我深有体会,在很多时候我遇到的困难或许别人之前就遇到过,向他们请教远比自己在那边摸索来得简单来得快。五 游戏代码MyJFrame.javapackage Russia;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.

9、*;SuppressWarnings( serial, unused )public class MyJFrame extends JFrame implements ActionListener public static boolean start=false; public MyJFrame() Image icon = getToolkit().getImage(F:javaworkspaceRussia 1.1icon.png);setIconImage(icon);setTitle(俄罗斯方块小游戏);setLocation(470,130);setDefaultCloseOper

10、ation(MyJFrame.EXIT_ON_CLOSE);setSize(247,520);setVisible(true);setResizable(false); MyPanel a = new MyPanel(); addKeyListener(a); add(a); JMenuBar menu = new JMenuBar();setJMenuBar(menu);JMenu game = new JMenu(游戏);JMenuItem exit = game.add(退出);menu.add(game); exit.addActionListener(this); public st

11、atic void main(String args) MyJFrame frame = new MyJFrame(); Override public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString s=e.getActionCommand();if(s=退出) System.exit(0); MyPanel.javapackage Russia;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.even

12、t.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.*;SuppressWarnings(serial)class MyPanel extends JPanel implements KeyListener private int boxs;/代表方块类型 private int score = 0; private int boxscode;/ 代表方块状态 private int x; private int y; private int i

13、 = 0; int j = 0; int flag = 0; int map = new int1323;/ 定义已经放下的方块x=0-11,y=0-21; public MyPanel() / 初始化构造方法 newboxs();newmap(); Timer timer = new Timer(1000, new TimerListener();timer.start();drawbox(); public void newmap() / 初始化地图 for (i = 0; i 12; i+) for (j = 0; j 22; j+) mapij = 0; / 方块的形状 第一组代表方块

14、类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三组为 方块矩阵 private final int shapes = new int 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 ,/ i 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 , 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 1, 1, 0, 0, 0

15、, 0, 0, 0, 0, 0, 0, 0 ,/ s 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,/ z 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 1, 0, 0

16、, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 ,/ j 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0

17、, 0, 0, 0, 0, 0, 0 ,/ o 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 ,/ l 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 0, 0, 0, 1

18、, 0, 0, 0, 0, 0, 0 , 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,/ t 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 ; public void drawbox() /画围墙 for

19、(i = 0; i 12; i+) mapi21 = 2;for (j = 0; j 22; j+) map11j = 2; map0j = 2; public void newboxs() / 生成新方块的方法 boxs = (int) (Math.random() * 1000) % 7;boxscode = (int) (Math.random() * 1000) % 4;x = 4;y = 0;if (gameover(x, y) = 1) newmap(); drawbox(); score = 0; JOptionPane.showMessageDialog(null, GAME

20、OVER); public void turn() / 旋转的方法 int tempturnState = boxscode;boxscode = (boxscode + 1) % 4;if (blow(x, y, boxs, boxscode) = 1)if (blow(x, y, boxs, boxscode) = 0) boxscode = tempturnState;repaint(); public void left()/ 左移的方法 if (blow(x - 1, y, boxs, boxscode) = 1) x = x - 1;repaint(); public void r

21、ight()/ 右移的方法 if (blow(x + 1, y, boxs, boxscode) = 1) x = x + 1;repaint(); public void down() / 下落的方法 if (blow(x, y + 1, boxs, boxscode) = 1) y = y + 1; gobox();if (blow(x, y + 1, boxs, boxscode) = 0) add(x, y, boxs, boxscode); newboxs(); gobox();repaint(); public int blow(int x, int y, int boxs, in

22、t boxscode) / 是否合法的方法 for (int a = 0; a 4; a+) for (int b = 0; b 4; b+) if (shapesboxsboxscodea * 4 + b = 1) & (mapx+ b + 1y + a = 1)| (shapesboxsboxscodea * 4 + b = 1) & (mapx+ b + 1y + a = 2) return 0; return 1; public void gobox() / 消行的方法 int c = 0;for (int b = 0; b 22; b+) for (int a = 0; a 0; d

23、-) for (int e = 0; e 11; e+) maped = maped - 1; c = 0; public int gameover(int x, int y) /判断挂方法 if (blow(x, y, boxs, boxscode) = 0) return 1;return 0; public void add(int x, int y, int blockType, int turnState)/ 把当前添加map int j = 0;for (int a = 0; a 4; a+) for (int b = 0; b 4; b+) if (mapx + b + 1y +

24、 a = 0) mapx + b + 1y + a = shapesblockTypeturnStatej;j+; public void paintComponent(Graphics g)/ 画方块的的方法 super.paintComponent(g);for (j = 0; j 16; j+)/ 画当前方块 if (shapesboxsboxscodej = 1) g.fillRect(j % 4 + x + 1) * 20, (j / 4 + y) * 20, 19, 19); for (j = 0; j 22; j+)/ 画已经固定的方块 for (i = 0; i 12; i+)

25、 if (mapij = 1) g.fillRect(i * 20, j * 20, 19, 19);if (mapij = 2) g.drawRect(i * 20, j * 20, 19, 19); g.setColor(Color.red);g.drawString(score= + score, 100, 460); public void keyPressed(KeyEvent e) switch (e.getKeyCode() case KeyEvent.VK_DOWN: down(); break;case KeyEvent.VK_UP: turn(); break;case K

26、eyEvent.VK_RIGHT: right(); break;case KeyEvent.VK_LEFT: left(); break; public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) class TimerListener implements ActionListener public void actionPerformed(ActionEvent e) repaint(); if (blow(x, y + 1, boxs, boxscode) = 1) y = y + 1;gobox(); if (blow(x, y + 1, boxs, boxscode) = 0) if (flag = 1) add(x, y, boxs, boxscode); gobox(); newboxs(); flag = 0;flag = 1; 参考文献:Java程序设计教程 主编:迟丽华清华大学出版社Java程序设计案列汇编 主编:焦玲等中国铁道出版社Java课程设计 主编: 耿祥义清华大学出版社Java经典编程300例 主编:明日科技清华大学出版社 16

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922