微信小程序 > 微信公开课 > 求java小程序源代码  在线等 急急急!!!
微信小程序,微信公开课,求java小程序源代码  在线等 急急急!!!

求java小程序源代码  在线等 急急急!!!

2019-03-12 17:02:19

微信公开课小程序热门讨论「求java小程序源代码  在线等 急急急!!!」最新回复-下面是俄罗斯方块游戏源代码还没完,这代码太长了,我用我另一个号再粘上importjavax.swing.*;importjavax.swing.JOptionPane;importjavax.swing.border.Border;importjavax.swing.border.EtchedBorder;importjava.awt.*;importjava.awt.event.*;/***游戏主类,继承自JFrame类,负责游戏的全局控制。*内含*1,一个GameCanvas画布类的实例引用,*2,一个保存当前活动块(ErsBlock)实例的引用,*3,一个保存当前控制面板(ControlPanel)实例的引用;*/publicclassErsBlocksGameextendsJFrame{/***每填满一行计多少分*/publicfinalstaticintPER_LINE_SCORE=100;/***积多少分以后能升级*/publicfinalstaticintPER_LEVEL_SCORE=PER_LINE_SCORE*20;/***最大级数是10级*/publicfinalstaticintMAX_LEVEL=10;/***默认级数是5*/publicfinalstaticintDEFAULT_LEVEL=5;privateGameCanvascanvas;privateErsBlockblock;privatebooleanplaying=false;privateControlPanelctrlPanel;privateJMenuBarbar=newJMenuBar();privateJMenumGame=newJMenu(游戏设置),mControl=newJMenu(游戏控制),mWindowStyle=newJMenu(窗口风格);privateJMenuItemmiNewGame=newJMenuItem(新游戏),miSetBlockColor=newJMenuItem(设置颜色...),miSetBackColor=newJMenuItem(设置底色...),miTurnHarder=newJMenuItem(提升等级),miTurnEasier=newJMenuItem(调底等级),miExit=newJMenuItem(退出),miPlay=newJMenuItem(开始游戏),miPause=newJMenuItem(暂停),miResume=newJMenuItem(继续);privateJCheckBoxMenuItemmiAsWindows=newJCheckBoxMenuItem(风格1),miAsMotif=newJCheckBoxMenuItem(风格2),miAsMetal=newJCheckBoxMenuItem(风格3,true);/***主游戏类的构造函数*@paramtitleString,窗口标题*/publicErsBlocksGame(Stringtitle){super(title);//this.setTitle(lskdf);setSize(315,392);DimensionscrSize=Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕的大小setLocation((scrSize.widthgetSize().width)/2,(scrSize.heightgetSize().height)/2);createMenu();Containercontainer=getContentPane();container.setLayout(newBorderLayout(6,0));canvas=newGameCanvas(20,12);ctrlPanel=newControlPanel(this);container.add(canvas,BorderLayout.CENTER);container.add(ctrlPanel,BorderLayout.EAST);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEventwe){JOptionPaneabout=newJOptionPane();stopGame();System.exit(0);}});addComponentListener(newComponentAdapter(){publicvoidcomponentResized(ComponentEventce){canvas.fanning();}});show();canvas.fanning();}//游戏“复位”publicvoidreset(){ctrlPanel.reset();canvas.reset();}/***判断游戏是否还在进行*@returnboolean,true还在运行,false已经停止*/publicbooleanisPlaying(){returnplaying;}/***得到当前活动的块*@returnErsBlock,当前活动块的引用*/publicErsBlockgetCurBlock(){returnblock;}/***得到当前画布*@returnGameCanvas,当前画布的引用*/publicGameCanvasgetCanvas(){returncanvas;}/***开始游戏*/publicvoidplayGame(){play();ctrlPanel.setPlayButtonEnable(false);miPlay.setEnabled(false);ctrlPanel.requestFocus();}/***游戏暂停*/publicvoidpauseGame(){if(block!=null)block.pauseMove();ctrlPanel.setPauseButtonLabel(false);miPause.setEnabled(false);miResume.setEnabled(true);}/***让暂停中的游戏继续*/publicvoidresumeGame(){if(block!=null)block.resumeMove();ctrlPanel.setPauseButtonLabel(true);miPause.setEnabled(true);miResume.setEnabled(false);ctrlPanel.requestFocus();}/***用户停止游戏*/publicvoidstopGame(){playing=false;if(block!=null)block.stopMove();miPlay.setEnabled(true);miPause.setEnabled(true);miResume.setEnabled(false);ctrlPanel.setPlayButtonEnable(true);ctrlPanel.setPauseButtonLabel(true);}/***得到当前游戏者设置的游戏难度*@returnint,游戏难度1-MAX_LEVEL*/publicintgetLevel(){returnctrlPanel.getLevel();}/***让用户设置游戏难度*@paramlevelint,游戏难度1-MAX_LEVEL*/publicvoidsetLevel(intlevel){if(level11&&level0)ctrlPanel.setLevel(level);}/***得到游戏积分*@returnint,积分。*/publicintgetScore(){if(canvas!=null)returncanvas.getScore();return0;}/***得到自上次升级以来的游戏积分,升级以后,此积分清零*@returnint,积分。*/publicintgetScoreForLevelUpdate(){if(canvas!=null)returncanvas.getScoreForLevelUpdate();return0;}/***当分数累计到一定的数量时,升一次级*@returnboolean,tureupdatesuccessufl,falseupdatefail*/publicbooleanlevelUpdate(){intcurLevel=getLevel();if(curLevelMAX_LEVEL){setLevel(curLevel+1);canvas.resetScoreForLevelUpdate();returntrue;}returnfalse;}/***游戏开始*/privatevoidplay(){reset();playing=true;Threadthread=newThread(newGame());thread.start();}/***报告游戏结束了*/privatevoidreportGameOver(){JOptionPane.showMessageDialog(this,游戏结束!);}/***建立并设置窗口菜单*/privatevoidcreateMenu(){bar.add(mGame);bar.add(mControl);bar.add(mWindowStyle);mGame.add(miNewGame);mGame.addSeparator();mGame.add(miSetBlockColor);mGame.add(miSetBackColor);mGame.addSeparator();mGame.add(miTurnHarder);mGame.add(miTurnEasier);mGame.addSeparator();mGame.add(miExit);mControl.add(miPlay);mControl.add(miPause);mControl.add(miResume);mWindowStyle.add(miAsWindows);mWindowStyle.add(miAsMotif);mWindowStyle.add(miAsMetal);setJMenuBar(bar);miPause.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,KeyEvent.CTRL_MASK));miResume.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0));miNewGame.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){stopGame();reset();setLevel(DEFAULT_LEVEL);}});miSetBlockColor.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){ColornewFrontColor=JColorChooser.showDialog(ErsBlocksGame.this,设置积木颜色,canvas.getBlockColor());if(newFrontColor!=null)canvas.setBlockColor(newFrontColor);}});miSetBackColor.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){ColornewBackColor=JColorChooser.showDialog(ErsBlocksGame.this,设置底版颜色,canvas.getBackgroundColor());if(newBackColor!=null)canvas.setBackgroundColor(newBackColor);}});miTurnHarder.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){intcurLevel=getLevel();if(curLevelMAX_LEVEL)setLevel(curLevel+1);}});miTurnEasier.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){intcurLevel=getLevel();if(curLevel1)setLevel(curLevel1);}});miExit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){System.exit(0);}});miPlay.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){playGame();}});miPause.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){pauseGame();}});miResume.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){resumeGame();}});miAsWindows.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){Stringplaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel;setWindowStyle(plaf);canvas.fanning();ctrlPanel.fanning();miAsWindows.setState(true);miAsMetal.setState(false);miAsMotif.setState(false);}});miAsMotif.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){Stringplaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel;setWindowStyle(plaf);canvas.fanning();ctrlPanel.fanning();miAsWindows.setState(false);miAsMetal.setState(false);miAsMotif.setState(true);}});miAsMetal.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){Stringplaf=javax.swing.plaf.metal.MetalLookAndFeel;setWindowStyle(plaf);canvas.fanning();ctrlPanel.fanning();miAsWindows.setState(false);miAsMetal.setState(true);miAsMotif.setState(false);}});}/***根据字串设置窗口外观*@paramplafString,窗口外观的描述*/privatevoidsetWindowStyle(Stringplaf){try{UIManager.setLookAndFeel(plaf);SwingUtilities.updateComponentTreeUI(this);}catch(Exceptione){}}/***一轮游戏过程,实现了Runnable接口*一轮游戏是一个大循环,在这个循环中,每隔100毫秒,*检查游戏中的当前块是否已经到底了,如果没有,*就继续等待。如果到底了,就看有没有全填满的行,*如果有就删除它,并为游戏者加分,同时随机产生一个*新的当前块,让它自动下落。*当新产生一个块时,先检查画布最顶上的一行是否已经*被占了,如果是,可以判断GameOver了。*/privateclassGameimplementsRunnable{publicvoidrun(){//产生新方快intcol=(int)(Math.random()*(canvas.getCols()3)),style=ErsBlock.STYLES[(int)(Math.random()*7)][(int)(Math.random()*4)];while(playing){if(block!=null){//第一次循环时,block为空if(block.isAlive()){try{Thread.currentThread().sleep(100);}catch(InterruptedExceptionie){ie.printStackTrace();}continue;}}checkFullLine();//检查是否有全填满的行if(isGameOver()){//检查游戏是否应该结束了miPlay.setEnabled(true);miPause.setEnabled(true);miResume.setEnabled(false);ctrlPanel.setPlayButtonEnable(true);ctrlPanel.setPauseButtonLabel(true);reportGameOver();return;}block=newErsBlock(style,1,col,getLevel(),canvas);block.start();col=(int)(Math.random()*(canvas.getCols()3));style=ErsBlock.STYLES[(int)(Math.random()*7)][(int)(Math.random()*4)];ctrlPanel.setTipStyle(style);}}/***检查画布中是否有全填满的行,如果有就删除之*/publicvoidcheckFullLine(){for(inti=0;icanvas.getRows();i++){introw=1;booleanfullLineColorBox=true;for(intj=0;jcanvas.getCols();j++){if(!canvas.getBox(i,j).isColorBox()){fullLineColorBox=false;break;}}if(fullLineColorBox){row=i;canvas.removeLine(row);}}}/***根据最顶行是否被占,判断游戏是否已经结束了。*@returnboolean,true游戏结束了,false游戏未结束*/privatebooleanisGameOver(){for(inti=0;icanvas.getCols();i++){ErsBoxbox=canvas.getBox(0,i);if(box.isColorBox())returntrue;}returnfalse;}}
/* *12.24日,完成了蛇撞到自己的检测.修改方法是在蛇的初始化的时候,用双循环来置FALSE;*在重写代码的时候,我借鉴了别人的思路:将整个游戏的界面定义为一个布尔型的二维数组.*用一个LinkedList来储存蛇.当蛇移动的时候,在蛇的头部增加一个节点,然后删除最后一个节点.*因为只是做练习,所以没做游戏界面,比如菜单栏,计分栏什么的.另外还有一个问题,就是当两次点击回车时,蛇的移动速度会变快*/importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.util.*;publicclassGame{publicstaticvoidmain(Stringargs[]){ GameFrameframe=newGameFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.show(); JOptionPane.showMessageDialog(null,上,下左,右控制蛇的方向n回车开始,S暂停);}}classGameFrameextendsJFrame{publicGameFrame(){ setSize(294,482); setTitle(贪吃蛇DEMO); this.setLocation(360,100); Containerc=getContentPane(); GamePanelpanel=newGamePanel(); c.add(panel,BorderLayout.CENTER);}}classGamePanelextendsJPanelimplementsKeyListener{staticintpanelWidth=294; staticintpanelHeight=450;intrectX=15;intrectY=15;Snakesnake;Noden;publicGamePanel(){ snake=newSnake(this,panelWidth/rectX,panelHeight/rectY); setBackground(Color.WHITE); setSize(panelWidth,panelHeight); setFocusable(true); addKeyListener(this);}publicvoidpaintComponent(Graphicsg){ super.paintComponent(g); Graphics2Dg2=(Graphics2D)g; LinkedListlist=snake.snakeList; Iteratorit=list.iterator(); g2.setColor(Color.black); while(it.hasNext()){  n=(Node)it.next();  drawNode(g2,n); } g2.setColor(Color.ORANGE); Nodef=snake.food; drawNode(g2,f); snake.drawMap(g2);//绘制地图}publicvoidkeyPressed(KeyEvente){ intkeycode=e.getKeyCode(); if(keycode==KeyEvent.VK_ENTER){  begin(); }elseif(keycode==KeyEvent.VK_UP){  snake.changeDirection(Snake.up); }elseif(keycode==KeyEvent.VK_DOWN){  snake.changeDirection(Snake.down); }elseif(keycode==KeyEvent.VK_LEFT){  snake.changeDirection(Snake.left); }elseif(keycode==KeyEvent.VK_RIGHT){  snake.changeDirection(Snake.right); }elseif(keycode==KeyEvent.VK_S){  Snake.run=false; }}publicvoidkeyReleased(KeyEvente){}publicvoidkeyTyped(KeyEvente){}publicvoiddrawNode(Graphics2Dg,Noden){ g.fillRect(n.x*rectX,n.y*rectY,rectX-2,rectY-2);}publicvoidbegin(){ Snake.run=true; SnakeThreadthread=newSnakeThread(snake); thread.start();}}classNode{intx;inty;publicNode(intx,inty){ this.x=x; this.y=y;}}classSnakeThreadextendsThread{Snakesnake;publicSnakeThread(Snakes){ snake=s;}publicvoidrun(){ Snake.run=true; while(Snake.run){  try{snake.move();sleep(200);  }catch(InterruptedExceptione){  } } Snake.run=false;}}classSnake{GamePanelpanel;Nodefood;boolean[][]all;publicstaticbooleanrun;intmaxX;intmaxY;publicstaticintleft=1;publicstaticintup=2;publicstaticintright=3;publicstaticintdown=4;intdirection=4;LinkedListsnakeList=newLinkedList();publicSnake(GamePanelp,intmaxX,intmaxY){ panel=p; this.maxX=maxX; this.maxY=maxY; all=newboolean[maxX][maxY]; for(inti=0;imaxX;i++){  for(intj=0;jmaxY;j++){all[i][j]=false;  } } intarrayLength=maxX20?10:maxX/2; for(inti=0;iarrayLength;i++){  intx=maxX/10+i;  inty=maxY/10;  snakeList.addFirst(newNode(x,y));  all[x][y]=true; } food=createFood(); all[food.x][food.y]=true;}//蛇移动的方法publicvoidmove(){ Noden=(Node)snakeList.getFirst(); intx=n.x; inty=n.y; if(direction==3){  x++; }elseif(direction==4){  y++; }elseif(direction==1){  x--; }elseif(direction==2){  y--; } //实现对蛇撞到自身的检测 if((0=x&&x=GamePanel.panelWidth/15-1)&&(0=y&&y=GamePanel.panelHeight/15-1)){  if(all[x][y]){if(x==food.x&&y==food.y){ snakeList.addFirst(food); food=createFood(); all[food.x][food.y]=true;}else{ JOptionPane.showMessageDialog(null,你撞到自己了); System.exit(0);}  }else{snakeList.addFirst(newNode(x,y));all[x][y]=true;Nodel=(Node)snakeList.getLast();snakeList.removeLast();all[l.x][l.y]=false;  } }else{  JOptionPane.showMessageDialog(null,越界了,游戏结束);  System.exit(0); } panel.repaint();}publicNodecreateFood(){ intx=0; inty=0; do{  Randomr=newRandom();  x=r.nextInt(maxX-10);  y=r.nextInt(maxY-10); }while(all[x][y]); returnnewNode(x,y);}//设置蛇不能回头publicvoidchangeDirection(intnewDirection){ if(direction%2!=newDirection%2){  direction=newDirection; }}publicvoiddrawMap(Graphics2Dg){ for(inti=0;imaxX;i++){  for(intj=0;jmaxY;j++){if(all[i][j]==true){ g.setColor(Color.red); g.fillRect(i,j,4,4);}  } }}} 更多有关「求java小程序源代码  在线等 急急急!!!」的疑问请扫码关注微信公开课+小程序!
标签:微信公开课,小程序
微信小程序,微信公开课,求java小程序源代码  在线等 急急急!!!

「求java小程序源代码  在线等 急急急!!!」热议话题订阅

方法1:微信扫描微信公开课小程序码即可订阅热议话题「求java小程序源代码  在线等 急急急!!!」

方法2:微信搜索微信公开课小程序名称进入,即可订阅热议话题「求java小程序源代码  在线等 急急急!!!」

方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热议话题「求java小程序源代码  在线等 急急急!!!」

微信公开课小程序热议话题「求java小程序源代码  在线等 急急急!!!」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。

微信公开课热议话题「求java小程序源代码  在线等 急急急!!!」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。