欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    俄罗斯方块游戏.doc

    • 资源ID:876480       资源大小:172.16KB        全文页数:17页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    俄罗斯方块游戏.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


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

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

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

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