木木小YY
/** * File: * User: 张丽琼 * Date: May 11, 2009 * Describe: 俄罗斯方块的Java实现 */package src;import .*;import .*;import .*;/** * 游戏主类,继承自JFrame类,负责游戏的全局控制。 * 内含 * 1, 一个GameCanvas画布类的实例引用, * 2, 一个保存当前活动块(ErsBlock)实例的引用, * 3, 一个保存当前控制面板(ControlPanel)实例的引用; */public class ErsBlocksGame extends JFrame { /** * 每填满一行计多少分(每填满一行计100分) */ public final static int PER_LINE_SCORE = 100; /** * 积多少分以后能升级(积满100*20分以后升一级) */ public final static int PER_LEVEL_SCORE = PER_LINE_SCORE * 20; /** * 最大级数是10级 */ public final static int MAX_LEVEL = 10; /** * 默认级数是5 */ public final static int DEFAULT_LEVEL = 5; private GameCanvas canvas;//画布类 private ErsBlock block;//块类 private boolean playing = false; private ControlPanel ctrlPanel;//控制面板类 /** * 菜单栏的实现。将JMenu对象添加到菜单栏以构造菜单。 * 当用户选择JMenu对象时,就会显示其关联的JPopupMenu,允许用户选择其上的某一个JMenuItem。 */ private JMenuBar bar = new JMenuBar(); /** * 菜单的该实现是一个包含 JMenuItem 的弹出窗口, * 用户选择 JMenuBar 上的项时会显示该 JMenuItem。除 JMenuItem 之外, * JMenu 还可以包含 JSeparator。 */ private JMenu mGame = new JMenu("Game"), mControl = new JMenu("Control"), mWindowStyle = new JMenu("WindowStyle"), mInfo = new JMenu("Information"); /** * 菜单中的项的实现。菜单项本质上是位于列表中的按钮。 * 当用户选择“按钮”时,则执行与菜单项关联的操作。JPopupMenu 中包含的 JMenuItem 正好执行该功能。 */ private JMenuItem miNewGame = new JMenuItem("New Game"), miSetBlockColor = new JMenuItem("Set Block Color ..."), miSetBackColor = new JMenuItem("Set Background Color ..."), miTurnHarder = new JMenuItem("Turn up the level"), miTurnEasier = new JMenuItem("Turn down the level"), miExit = new JMenuItem("Eixt"), miPlay = new JMenuItem("Play"), miPause = new JMenuItem("Pause"), miResume = new JMenuItem("Resume"), miStop = new JMenuItem("Stop"), miAuthor = new JMenuItem("Author : "), miSourceInfo = new JMenuItem("You can get the source code / document by email"); /** * 可以被选定或取消选定的菜单项。 * 如果被选定,菜单项的旁边通常会出现一个复选标记。如果未被选定或被取消选定, * 菜单项的旁边就没有复选标记。像常规菜单项一样,复选框菜单项可以有与之关联的文本或图标, * 或者二者兼而有之。 */ private JCheckBoxMenuItem miAsWindows = new JCheckBoxMenuItem("Windows"), miAsMotif = new JCheckBoxMenuItem("Motif"), miAsMetal = new JCheckBoxMenuItem("Metal", true);//true默认是显示的这个Metal /** * 主游戏类的构造函数 * @param title String,窗口标题 */ public ErsBlocksGame(String title) { super(title); //setSize(315, 392);//设置组件窗口的尺寸大小。 setSize(315,392); /** * 此类是所有 Abstract Window Toolkit 实际实现的抽象超类。 * Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。 */ Dimension scrSize = ().getScreenSize();// 获取屏幕的大小。 /** * 将组件移到新位置。 * 以 Dimension 对象的形式返回组件的大小。 * 这里是设置游戏窗口在屏幕上位置。 */ setLocation(( - getSize().width) / 2, ( - getSize().height) / 2); createMenu();//此方法在下面定义 /** * Container () 返回此窗体的 contentPane 对象 */ Container container = getContentPane(); (new BorderLayout(6,0)); canvas = new GameCanvas(20,12); ctrlPanel = new ControlPanel(this); (canvas, );//窗口的而局 (ctrlPanel, ); /** * void (WindowListener l) * 添加指定的窗口侦听器,以从此窗口接收窗口事件。 */ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { stopGame();//这个方法是自定义的,在下面有。 (0); } }); /** * void (ComponentListener l) * 添加指定的组件侦听器,以接收发自此组件的组件事件。 */ addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent ce) { ();//此方法在GameCanvas类中定义 } }); //show();//此方法在过时了,采用下面这个方法。 setVisible(true); (); }//主游戏类的构造函数到这里写完了 /** * 让游戏“复位” */ public void reset() { (); (); } /** * 判断游戏是否还在进行 * @return boolean, true-还在运行,false-已经停止 */ public boolean isPlaying() { return playing; } /** * 得到当前活动的块 * @return ErsBlock, 当前活动块的引用 */ public ErsBlock getCurBlock() { return block; } /** * 得到当前画布 * @return GameCanvas, 当前画布的引用 */ public GameCanvas getCanvas() { return canvas; } /** * 开始游戏 */ public void playGame() { play();//此方法是自己定义的,在下面 (false);//游戏开始以后禁用“play”按钮。 /** * void (boolean b)启用或禁用菜单项。 * 在游戏开始以后这个菜单项就不能用了,设置为false. */ (false); ();// 请求此 Component 获取输入焦点。 } /** * 游戏暂停 */ public void pauseGame() { if (block != null) (); (false); (false); (true); } /** * 让暂停中的游戏继续 */ public void resumeGame() { if (block != null) (); (true); (true); (false); (); } /** * 用户停止游戏 */ public void stopGame() { playing = false; if (block != null) (); (true); (true); (false); (true); (true); } /** * 得到当前游戏者设置的游戏难度 * @return int, 游戏难度1-MAX_LEVEL */ public int getLevel() { return (); } /** * 让用户设置游戏难度 * @param level int, 游戏难度1-MAX_LEVEL */ public void setLevel(int level) { if (level < 11 && level > 0) (level); } /** * 得到游戏积分 * @return int, 积分。 */ public int getScore() { if (canvas != null) return (); return 0; } /** * 得到自上次升级以来的游戏积分,升级以后,此积分清零 * @return int, 积分。 */ public int getScoreForLevelUpdate() { if (canvas != null) return (); return 0; } /** * 当分数累计到一定的数量时,升一次级 * @return boolean, ture-update successufl, false-update fail */ public boolean levelUpdate() { int curLevel = getLevel(); if (curLevel < MAX_LEVEL) { setLevel(curLevel + 1); (); return true; } return false; } /** * 游戏开始 */ private void play() { reset(); playing = true; Thread thread = new Thread(new Game()); (); } /** * 报告游戏结束了 */ private void reportGameOver() { (this, "Game Over!"); } /** * 建立并设置窗口菜单 */ private void createMenu() { (mGame); (mControl); (mWindowStyle); (mInfo); (miNewGame); (); (miSetBlockColor); (miSetBackColor); (); (miTurnHarder); (miTurnEasier); (); (miExit); (miPlay); (miPause); (miResume); (miStop); (miAsWindows); (miAsMotif); (miAsMetal); (miAuthor); (miSourceInfo); setJMenuBar(bar); ( (, )); ((, 0)); (new ActionListener() { public void actionPerformed(ActionEvent ae) { stopGame(); reset(); setLevel(DEFAULT_LEVEL); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { Color newFrontColor = (, "Set color for block", ()); if (newFrontColor != null) (newFrontColor); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { Color newBackColor = (, "Set color for block", ()); if (newBackColor != null) (newBackColor); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { int curLevel = getLevel(); if (curLevel < MAX_LEVEL) setLevel(curLevel + 1); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { int curLevel = getLevel(); if (curLevel > 1) setLevel(curLevel - 1); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { (0); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { playGame(); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { pauseGame(); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { resumeGame(); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { stopGame(); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { String plaf = ""; setWindowStyle(plaf); (); (); (true); (false); (false); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { String plaf = ""; setWindowStyle(plaf); (); (); (false); (false); (true); } }); (new ActionListener() { public void actionPerformed(ActionEvent ae) { String plaf = ""; setWindowStyle(plaf); (); (); (false); (true); (false); } }); } /** * 根据字串设置窗口外观 * @param plaf String, 窗口外观的描述 */ private void setWindowStyle(String plaf) { try { (plaf); (this); } catch (Exception e) { } } /** * 一轮游戏过程,实现了Runnable接口 * 一轮游戏是一个大循环,在这个循环中,每隔100毫秒, * 检查游戏中的当前块是否已经到底了,如果没有, * 就继续等待。如果到底了,就看有没有全填满的行, * 如果有就删除它,并为游戏者加分,同时随机产生一个 * 新的当前块,让它自动下落。 * 当新产生一个块时,先检查画布最顶上的一行是否已经 * 被占了,如果是,可以判断Game Over了。 */ private class Game implements Runnable { public void run() { int col = (int) (() * (() - 3)), style = [(int) (() * 7)][(int) (() * 4)]; while (playing) { if (block != null) { //第一次循环时,block为空 if (()) { try { ().sleep(100); } catch (InterruptedException ie) { (); } continue; } } checkFullLine(); //检查是否有全填满的行 if (isGameOver()) { //检查游戏是否应该结束了 (true); (true); (false); (true); (true); reportGameOver(); return; } block = new ErsBlock(style, -1, col, getLevel(), canvas); (); col = (int) (() * (() - 3)); style = [(int) (() * 7)][(int) (() * 4)]; (style); } } /** * 检查画布中是否有全填满的行,如果有就删除之 */ public void checkFullLine() { for (int i = 0; i < (); i++) { int row = -1; boolean fullLineColorBox = true; for (int j = 0; j < (); j++) { if (!(i, j).isColorBox()) { fullLineColorBox = false; break; } } if (fullLineColorBox) { row = i--; (row); } } } /** * 根据最顶行是否被占,判断游戏是否已经结束了。 * @return boolean, true-游戏结束了,false-游戏未结束 */ private boolean isGameOver() { for (int i = 0; i < (); i++) { ErsBox box = (0, i); if (()) return true; } return false; } }}
俄罗斯方块C源代码 #include #include #include #include #define ZL 4 //坐标增量, 不使游
手机知网 App24小时专家级知识服务打 开手机知网|搜索登录|注册学位论文>哲学与人文科学论19世纪末至20世纪初俄国作家创作中的中国形象马洛丹本文运用形象学
列昂诺夫的长篇小说《俄罗斯森林》是他描写人与自然关系中最具代表性的一部,他的主要思想是保护森林。作家在作品中描述了人们为了发展而毁坏自然、乱砍滥伐,最终导致一系
莫斯科是俄罗斯的首都,拥有900多年的悠久历史,也是目前世界上最知名的城市之一,这里保留了大量的古代建筑遗迹和传统的俄罗斯文化元素,是一个相当不错的旅游胜地,下
俄罗斯硕士论文一般在2.5万字至4万字之间(中文),1.3万至1.8万单词之间(俄文);论文主体部分英文词数至少20000 words;硕士论文需要通过俄罗斯科