java小游戏简化版人体俄罗斯方块小游戏,

JAVA俄罗斯方块游戏系统的设计与实现|java小游戏制作课题的游戏简介写错,怎么办?
游戏简介俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。“俄罗斯方块”由莫斯科科学学院程序员Alexei Pajitnov所设计。显然,人们一开始并没预料到它将会有如此广泛的吸引力。实际上,在游戏发明后的数年间,“俄罗斯方块”成了无数场专利官司和法律纠纷的目标,而许多公司也不遗余力地上阵厮杀,想要将游戏的创意据为己有。一个最初的版本是Spectrum Holobyte为IBM兼容机开发的游戏。1988年,“俄罗斯方块”在街机上也变得非常流行,这都要归功于Atari,因为他们发布了一个能让两名玩家同时游戏的版本[7]。在1988年,Tengen为任天堂娱乐系统发布了“俄罗斯方块”的一个优秀版本,但它很快便从货架上撤掉了,因为任天堂指控Tengen公司侵犯版权。后来,任天堂把那个版本的“俄罗斯方块”换成了自己的版本,可是新版本却缺乏Tengen版的双人对打模式和出色的音乐。到了1989年,任天堂着手将一个移动版本的“俄罗斯方块”与当时崭新的GBA (GAMEBOY ADVANCE新一代掌上游戏机)系统捆绑出售。这个后来成为有史以来销售成绩最佳的游戏系统,对此,“俄罗斯方块”作出了不小的贡献。本游戏就是在图3.1所示的四种图形从屏幕上方掉下来时,巧妙地安排布置和变形,达到充分利用屏幕空间的目的。每当屏幕的一整行被方块积木排满时,作为奖赏,该行从屏幕上消失,剩余的积木依次往下降一行。当积木堆达到屏幕顶端的时候,游戏结束。你可以参考上文修改,具体可以看看毕业设计是怎么做的,希望采纳。
已有帐号?
无法登录?
社交帐号登录自己写游戏——俄罗斯方块2(显示界面)(Java)
设计好了数据模型,我们来写一下游戏时的画布(canvas)和控制面板(control panel)
//GameCanvas.java
这个画布类主要是俄罗斯方块的活动区域,即m*n的方格数组,上次写的ErsBox的基础作用就体现出来啦。
此外,游戏得分的内部逻辑也是在这里控制的,为什么呢?主要是canvas类中还包含了removeline和reset等
方法,在这里控制score和level的升级比较方便,还可以通过ctrlPanel对这两个属性的访问来做显示。
那么方块的速度是怎么定的呢?主类Game类在新生成一个方块时,先去ctrlPanel找tftext的文本显示,以此为中介访问score和level的数据,好像费了两遍事,但是有一点请注意,主类并不能直接控制和访问canvas中的属性有利于保护封装性。在设置难度时也是通过ctrlPanel改变tftext的显示,Game类读取text文本域的值之后新生成对象时才确定难度,level已经确定,在这个方块线程中就不会再被人为改变(除非升级了)。
import javax.swing.*;
import javax.swing.border.EtchedB
import java.awt.*;
import java.awt.event.*;
class GameCanvas extends JPanel
&private Color backColor = Color.black, frontColor
&private int rows, cols, score = 0,
scoreForLevelUpdate = 0;
&private ErsBox[][]
&private int boxWidth, boxH
&public GameCanvas(int rows, int cols)
&&this.rows =
&&this.cols =
&&boxes = new
ErsBox[rows][cols];
&&for(int i = 0; i
& boxes. ++i)
&&&for(int j =
0; j & boxes[i]. ++j)
&&&&boxes[i][j]
= new ErsBox(false);
&&setBorder(new
EtchedBorder(EtchedBorder.RAISED,Color.white,new
Color(148,145,140)));
&public GameCanvas(int rows, int cols, Color
backColor, Color frontColor)
&&this(rows,cols);
&&this.backColor =
&&this.frontColor =
&public ErsBox getBox(int row, int col)
&&if(row & 0 ||
row & boxes.length -1 || col & 0 ||
col & boxes[0].length - 1)
&&return boxes[row][col];
&public& synchronized void
removeLine(int row)
&&for(int i = i
&&&for(int j =
0; j & ++j)
&&&&boxes[i][j]
= (ErsBox) boxes[i-1][j].clone();
&&score += 30;
&&scoreForLevelUpdate +=
&&repaint();
&public void paintComponent(Graphics g)
&&super.paintComponent(g);
&&g.setColor(frontColor);
&&for(int i = 0; i
& boxes. ++i)
&&&for(int j =
0; j & boxes[i]. ++j)
&&&&g.setColor(boxes[i][j].isColorBox()?
frontColor:backColor);
&&&&g.fill3DRect(j*boxWidth,
i*boxHeight, boxWidth, boxHeight, true);
&public void fanning()
&&boxWidth = getSize().width /
&&boxHeight = getSize().height /
&public void reset()
&&score = 0;
&&scoreForLevelUpdate = 0;
&&for(int i = 0; i
& boxes. ++i)
&&&for(int j =
0; j & boxes[i]. ++j)
&&&&boxes[i][j].setColor(false);
&&repaint();
&public Color getBackgroundColor()
&&return backC
&public void setBackgroundColor(Color
backColor)
&&this.backColor =
&public Color getBlockColor()
&&return frontC
&public void setBlockColor(Color
frontColor)
&&this.frontColor =
&public int getRows()
&public void setRows(int rows)
&&this.rows =
&public int getCols()
&public void setCols(int cols)
&&this.cols =
&public void setScore(int score)
&&this.score =
&public int getScore()
&public int getScoreForLevelUpdate()
scoreForLevelU
&public void resetScoreForLevelUpdate()
&&scoreForLevelUpdate -=
ErsBlocksGame.PER_LEVEL_SCORE;
//ControlPanel
这个类由三部分组成,一部分是提示面板(TipPanel的内部类),一部分是得分和等级的显示(Textline),第三部分是控制按钮组合(btXXX)。在这部分是连接内部数据与外部控制的接口,很多实用的技术,比如事件的监听及响应等。
import java.awt.BorderL
import java.awt.C
import java.awt.G
import java.awt.GridL
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.B
import javax.swing.border.EtchedB
class ControlPanel extends JPanel
&private JTextField tfLevel = new
JTextField(""+
&&&ErsBlocksGame.DEFAULT_LEVEL),tfScore
= new JTextField("0");
&private JButton
&&btPlay = new
JButton("Start"),
&&btPause = new
JButton("Pause"),
&&btStop = new
JButton("Stop"),
&&btTurnLevelUp = new
JButton("Harder"),
&&btTurnLevelDown = new
JButton("Easier");
&private JPanel plTip = new JPanel(new
BorderLayout());
&private TipPanel plTipBlock = new
TipPanel();
&private JPanel plInfo = new JPanel(new
GridLayout(4,1));
&private JPanel plButton = new JPanel(new
GridLayout(5,1));
&private T
&private ErsBlocksG
&private Border border = new
EtchedBorder(EtchedBorder.RAISED,
&&&Color.white,new
Color(148,145,140));
&public ControlPanel(final ErsBlocksGame
&&setLayout(new
GridLayout(3,1,0,4));
&&this.game =
&&plTip.add(new JLabel("Next
Shape"),BorderLayout.NORTH);
&&plTip.add(plTipBlock);
&&plTip.setBorder(border);
&&plInfo.add(new
JLabel("Level"));
&&plInfo.add(tfLevel);
&&plInfo.add(new
JLabel("Score"));
&&plInfo.add(tfScore);
&&plInfo.setBorder(border);
&&tfLevel.setEditable(false);
&&tfScore.setEditable(false);
&&plButton.add(btPlay);
&&plButton.add(btPause);
&&plButton.add(btStop);
&&plButton.add(btTurnLevelUp);
&&plButton.add(btTurnLevelDown);
&&plButton.setBorder(border);
&&add(plTip);
&&add(plInfo);
&&add(plButton);
&&addKeyListener(new
ControlKeyListener());
&&btPlay.addActionListener(new
ActionListener()
&&&&public
void actionPerformed(ActionEvent ae)
&&&&&game.playGame();
&&btPause.addActionListener(new
ActionListener()
&&&&public
void actionPerformed(ActionEvent ae)
(btPause.getText().equals(new String("Pause")))
&&&&&&game.pauseGame();//
&&&&&&game.resumeGame();
&&btStop.addActionListener(new
ActionListener()
&&&&public
void actionPerformed(ActionEvent ae)
&&&&&game.stopGame();//
&&btTurnLevelUp.addActionListener(new
ActionListener()
&&&&public
void actionPerformed(ActionEvent ae)
level = Integer.parseInt(tfLevel.getText());
&&&&&&if(level
& ErsBlocksGame.MAX_LEVEL)
&&&&&&&tfLevel.setText(""+(level+1));
&&&&&catch
(NumberFormatException e)
&&&&&requestFocus();
&&btTurnLevelDown.addActionListener(new
ActionListener()
&&&&public
void actionPerformed(ActionEvent ae)
level = Integer.parseInt(tfLevel.getText());
&&&&&&if(level
&&&&&&&tfLevel.setText(""+(level-1));
&&&&&catch
(NumberFormatException e)
&&&&&requestFocus();
&&addComponentListener(new
ComponentAdapter()
&&&&public
void componentResized(ComponentEvent ce)
&&&&&plTipBlock.fanning();
&&timer = new Timer(500,new
ActionListener()
&&&&public
void actionPerformed(ActionEvent ae)
&&&&&tfScore.setText(""+game.getScore());
scoreForLevelUpdate = game.getScoreForLevelUpdate();
&&&&&if(scoreForLevelUpdate
&= ErsBlocksGame.PER_LEVEL_SCORE
scoreForLevelUpdate & 0)
&&&&&&game.levelUpdate();
&&timer.start();
&public void setPauseButtonLabel(boolean
&&btPause.setText(notPause?"Pause":"Resume");
&public void setPlayButtonEnable(boolean
&&btPlay.setEnabled(flag);
&public void setTipPanel(int style)
&&plTipBlock.setTipStyle(style);
&&plTipBlock.repaint();
&public void reset()
&&setPlayButtonEnable(true);
&&setPauseButtonLabel(true);
&public void fanning()
&&plTipBlock.fanning();
&public int getLevel()
&&int level =
Integer.parseInt(tfLevel.getText());
&public void setLevel(int level)
&&tfLevel.setText(""+level);
&private class TipPanel extends JPanel
&&private Color backColor =
Color.darkGray, frontColor = Color.lightG
&&private ErsBox[][] boxes = new
ErsBox[ErsBlock.BOXES_ROWS][ErsBlock.BOXES_COLS];
&&private int style, boxWidth,
&&public TipPanel()
&&&for (int i =
0; i & boxes. ++i)
(int j = 0; j & boxes[i]. ++j)
&&&&&boxes[i][j]
= new ErsBox(false);
&&public TipPanel(Color
backColor, Color frontColor)
&&&this();
&&&this.backColor
&&&this.frontColor
&&public void
paintComponent(Graphics g)
&&&int key =
&&&for (int i =
0; i & boxes. ++i)
(int j = 0; j & boxes[i]. ++j)
&&&&&Color
color = ((key & style) != 0) ? frontColor :
&&&&&g.setColor(color);
&&&&&g.fill3DRect(j
* boxWidth, i * boxHeight, boxWidth, boxHeight, true);
&&public void setTipStyle(int
&&&this.style =
&&public void fanning()
&&&boxWidth =
getSize().width / ErsBlock.BOXES_COLS;
&&&boxHeight =
getSize().height / ErsBlock.BOXES_ROWS;
&private class ControlKeyListener extends
KeyAdapter
&&public void keyPressed(KeyEvent
&&&if(!game.isPlaying())
&&&&return
&&&ErsBlock
block = game.getCurBlock();
&&&switch(ke.getKeyCode())
KeyEvent.VK_DOWN:
&&&&&block.moveDown();
KeyEvent.VK_LEFT:
&&&&&block.moveLeft();
KeyEvent.VK_RIGHT:
&&&&&block.moveRight();
KeyEvent.VK_UP:
&&&&&block.turnNext();
&&&&default:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。&新版Java俄罗斯方块游戏源码
秒后自动跳转到登录页
(奖励10下载豆)
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
C#摄像头源码分享
用C++实现2048游戏的
198个经典C#WinForm
Java 7并发编程实战
Java经典问题答案(
算法与数据结构-实用
百度面试题总结
新版Java俄罗斯方块游戏源码
上传时间:
技术分类:
资源评价:
(5位用户参与评价)
已被下载&97&次
使用Java开发的超绚丽的俄罗斯方块游戏源代码,运行注意事项:      1、Window在配置完java环境后,直接双击start.bat运行。   2、Linux在配置完java环境后,直接双击start.sh运行。
本资料共包含以下附件:
新版Java俄罗斯方块游戏源码.rar
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载1269次
下载1374次
下载1269次
下载2084次
相关专题推荐
本专题收录Java经典编程的实例源码,
在国内的开发语言中,java凭借这简单
本套视频教程是韩顺平老师,循序渐进
北京圣思园张龙(风中叶)老师的Java
讲述Arm嵌入式Linux系统下的C语言编程
这段视频是从尚学堂科技的教学课堂上
本套视频共78集,是由郝斌老师根据多
本视频专题共180集涵盖了C语言概述中
本视频专题共107集涵盖了Java概述、数
由传智播客毕向东老师讲解的Java基础
本专题为spring视频教程,共31集。教
本专题为C语言黑客编程系列视频教程,
本专题为韩顺平讲解的Java从入门到精
本专题为Java Web项目开发案例精粹视
SSH为struts+spring+hibernate的一个
本专题为疯狂Java李刚老师讲解的Stru
本周下载热点
意见或建议:
联系方式:
您已提交成功!感谢您的宝贵意见,我们会尽快处理Java编写的俄罗斯方块(小游戏)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Java编写的俄罗斯方块(小游戏)
上传于||文档简介
&&小​游​戏​源​代​码​分​享​。
大小:13.61KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 在线小游戏俄罗斯方块 的文章

 

随机推荐