Java俄罗斯方块实现步骤.ppt

上传人:za****8 文档编号:13189693 上传时间:2020-06-07 格式:PPT 页数:25 大小:207.96KB
返回 下载 相关 举报
Java俄罗斯方块实现步骤.ppt_第1页
第1页 / 共25页
Java俄罗斯方块实现步骤.ppt_第2页
第2页 / 共25页
Java俄罗斯方块实现步骤.ppt_第3页
第3页 / 共25页
点击查看更多>>
资源描述
项目实战俄罗斯方块,主讲:贾宗维,程序演示,游戏01_功能演示与说明游戏02_面向对象设计游戏03_使用API类组装游戏游戏04_编写各个类主体框架游戏05_编写Controler类实现事件监听游戏06_编写类测试代码游戏07_图形设计与创建游戏08_图形移动与显示游戏09_处理游戏边界问题游戏10_障碍物生成与显示游戏11_消除满行的障碍物游戏12_增加游戏结束游戏13_定时下落,编写各个类主体框架-Shape类,publicclassShape/privateShapeListenerlistener;publicvoidmoveLeft()System.out.println(shapesmoveLeft);publicvoidmoveRight()System.out.println(shapesmoveright);publicvoidmoveDown()System.out.println(shapesmoveDown);publicvoidrotate()System.out.println(shapesrotate);publicvoiddrawMe()System.out.println(shapesdrawme);,privateclassShapeDriverimplementsRunnablepublicvoidrun()/TODOAuto-generatedmethodstubwhile(true)moveDown();/listener.shapeMoveDown(Shape.this);tryThread.sleep(1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();,编写各个类主体框架-ShapeFactory类,publicclassShapeFactorypublicShapegetShape(ShapeListenerlistener)System.out.println(ShapeFactorysgetShape);Shapeshape=newShape();returnshape;,编写各个类主体框架-Ground类,packagecn.tetris.entities;publicclassGroundpublicvoidaccept()System.out.println(Groundsaccept);publicvoiddrawMe()System.out.println(GroundsdrawMe);,编写各个类主体框架-GamePanel类,publicclassGamePanelextendsJPanelprivateGroundground;privateShapeshape;publicvoiddisplay(Groundground,Shapeshape)System.out.println(GamePanelsdisplay);this.ground=ground;this.shape=shape;this.repaint();OverrideprotectedvoidpaintComponent(Graphicsarg0)/TODOAuto-generatedmethodstub/重新显示if(ground!=null,编写各个类主体框架-Controller类,publicclassControllerextendsKeyAdapterprivateGroundground;privateShapeshape;privateShapeFactoryshapeFactory;privateGamePanelgamePanel;publicvoidkeyPressed(KeyEvente)switch(e.getKeyCode()caseKeyEvent.VK_UP:shape.rotate();break;caseKeyEvent.VK_LEFT:shape.moveLeft();break;caseKeyEvent.VK_RIGHT:shape.moveRight();break;caseKeyEvent.VK_DOWN:shape.moveDown();break;gamePanel.display(ground,shape);,编写各个类主体框架-ShapeListener接口,publicinterfaceShapeListenervoidshapeMoveDown(Shapeshape);,Shape类增加监听器对象及下落后调用,publicclassShapeprivateShapeListenerlistener;publicvoidmoveLeft()System.out.println(shapesmoveLeft);publicvoidmoveRight()System.out.println(shapesmoveright);publicvoidmoveDown()System.out.println(shapesmoveDown);publicvoidrotate()System.out.println(shapesrotate);publicvoiddrawMe()System.out.println(shapesdrawme);,privateclassShapeDriverimplementsRunnablepublicvoidrun()/TODOAuto-generatedmethodstubwhile(true)moveDown();listener.shapeMoveDown(Shape.this);tryThread.sleep(1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();,Shape类中增加注册监听器的方法,publicvoidaddShapeListener(ShapeListenerl)if(l!=null)this.listener=l;,Shape构造方法中启动下落线程,publicShape()newThread(newShapeDriver().start();,Controller类实现ShapeListener接口,publicclassControllerextendsKeyAdapterimplementsShapeListenerpublicvoidshapeMoveDown(Shapeshape)/TODOAuto-generatedmethodstubgamePanel.display(ground,shape);,生产图形时同时注册监听器,publicclassShapeFactorypublicShapegetShape(ShapeListenerlistener)System.out.println(ShapeFactorysgetShape);Shapeshape=newShape();shape.addShapeListener(listener);returnshape;,GamePanel类设置大小,publicGamePanel()this.setSize(300,300);,Controller类中增加开始新游戏方法,publicvoidnewGame()shape=shapeFactory.getShape(this);,Controller类中如何接收外部控制的对象,publicController(ShapeFactoryshapeFactory,Groundground,GamePanelgamePanel)this.shapeFactory=shapeFactory;this.ground=ground;this.gamePanel=gamePanel;,测试类Game,publicclassGamepublicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubShapeFactoryshapeFactory=newShapeFactory();Groundground=newGround();GamePanelgamePanel=newGamePanel();Controllercontroller=newController(shapeFactory,ground,gamePanel);JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(gamePanel.getSize().width+10,gamePanel.getSize().height+35);frame.add(gamePanel);gamePanel.addKeyListener(controller);frame.setVisible(true);controller.newGame();,程序步骤,游戏01_功能演示与说明游戏02_面向对象设计游戏03_使用API类组装游戏游戏04_编写各个类主体框架游戏05_编写Controler类实现事件监听游戏06_编写类测试代码游戏07_图形设计与创建游戏08_图形移动与显示游戏09_处理游戏边界问题游戏10_障碍物生成与显示游戏11_消除满行的障碍物游戏12_增加游戏结束游戏13_定时下落,Shape类,增加图形的描述,/二维变量用于保存图形的所有状态privateintbody;/用于保存图形当前的状态privateintstatus;/设置状态的方法publicvoidsetBody(intbody)this.body=body;/设置当前是第几种状态publicvoidsetStatus(intstatus)this.status=status;,ShapeFactory类增加生产各种图形,/三维数组用于表示一种图形的多种形状privateintshapes=newint1,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,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0;,publicShape/生产一个随机数,用于表示图形的状态inttype=newRandom().nextInt(shapes.length);/设置图形有几种状态shape.setBody(shapestype);/设置默认状态shape.setStatus(0);returnshape;,Shape类中增加图形的位置信息,/表示图形距离左侧的距离privateintleft;/表示图形距离上边界的距离privateinttop;publicvoidmoveLeft()left-;publicvoidmoveRight()left+;publicvoidmoveDown()top+;publicvoidrotate()/显示下一个状态,但得保证状态值不超过4,所以需处理status=(status+1)%body.length;,Shape类中增加图形的绘制方法,publicvoiddrawMe(Graphicsg)System.out.println(shapesdrawme);g.setColor(Color.RED);/循环访问代表方正的数组for(intx=0;x4;x+)for(inty=0;y4;y+)if(getFlagByPoint(x,y)g.fill3DRect(left+x)*Global.CELL_SIZE,(top+y)*Global.CELL_SIZE,Global.CELL_SIZE,Global.CELL_SIZE,true);/获取方正中标志是1还是0,1表示要绘图0表示不绘图privatebooleangetFlagByPoint(intx,inty)returnbodystatusy*4+x=1;,游戏常量的存放Glaobal,publicclassGlobal/表示每个方格的像素值publicstaticfinalintCELL_SIZE=20;/表示图形面板有多少个格子宽和高publicstaticfinalintWIDTH=15;publicstaticfinalintHEIGHT=15;,测试游戏,下落方块出现拖影,在GamePanel类的paintComponent方法中增加如下代码:在填充一个与背景同色的区域g.setColor(newColor(0 xcfcfcf);g.fillRect(0,0,Global.CELL_SIZE*Global.WIDTH,Global.CELL_SIZE*Global.HEIGHT);/填充一个灰色显示区域,避免图形拖影修改此处的同时还需修改Shape的drawme方法中设置图形的颜色,以及给frame也注册监听器。,图形如何避免移出边界,publicbooleanisMoveable(Shapeshape,intaction)/得到图像当前的位置信息intleft=shape.getLeft();inttop=shape.getTop();/根据图形的动作,得出图形最新的位置信息switch(action)caseShape.LEFT:left-;break;caseShape.RIGHT:left+;break;caseShape.DOWN:top+;break;,/依次取出图形中的每一个点,判断是否超出显示区域for(intx=0;x=Global.HEIGHT|left+x=Global.WIDTH)returnfalse;returntrue;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!