java实现的2048游戏完整实例

本文实例讲述了java实现的2048游戏。分享给大家供大家参考,具体如下:

先来看看运行效果:

具体代码如下:

package awtDemo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
@SuppressWarnings("serial")
public class Game2048 extends JApplet{
  @SuppressWarnings("unused")
 private static final int UP=0,DOWN=1,LEFT=2,RIGHT=3;
  private static final int WID=150,SP=10;
  @SuppressWarnings("unused")
 private int scores=0;
  private static JLabel scoreLabel;
  private boolean change,CheckMode=false,gameOverFlag=false,successFlag=false;
  private int[] label={2,4,8,16,32,64,128};
  private Color[] clo={
      new Color(200,200,200),new Color(228,228,160),new Color(214,163,92),
      new Color(234,124,72),new Color(240,84,77),new Color(255,68,53),new Color(200,200,64)
  };
  @SuppressWarnings("rawtypes")
 private Map cmap=new HashMap();
  public static RectObject[][] rset=new RectObject[4][4];
  public RectObject[][] list=new RectObject[4][4];
  private My2048Panel myp;
  @SuppressWarnings("rawtypes")
 private LinkedList saveList=new LinkedList();
  private JButton goBackButton;
  KeyListener kl=new KeyListener(){
    public void keyPressed(KeyEvent e){
      saveTheStep();
      goBackButton.setVisible(true);
      if(gameOverFlag==true){
        return;
      }
      if(!aDirAble()){
        gameOver();
      }
      int key=e.getKeyCode();
      switch(key){
      case KeyEvent.VK_UP:
        change=false;
        moveUp(true);
        if(change==true){
          getARandomRect();
          //saveTheStep();
        }
        break;
      case KeyEvent.VK_DOWN:
        change=false;
        moveDown(true);
        if(change==true){
          getARandomRect();
          //saveTheStep();
        }
        break;
      case KeyEvent.VK_LEFT:
        change=false;
        moveLeft(true);
        if(change==true){
          getARandomRect();
          //saveTheStep();
        }
        break;
      case KeyEvent.VK_RIGHT:
        change=false;
        moveRight(true);
        if(change==true){
          getARandomRect();
          //saveTheStep();
        }
        break;
      }
      //saveTheStep();
    }
    public void keyTyped(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
  };
  class RectObject{
    private int value;
    public RectObject(){
      value=0;
    }
    public RectObject(RectObject obj){
      value=obj.value;
    }
    public boolean equals(Object inobj){
      RectObject obj=(RectObject)inobj;
      if(obj.value==value){
        return true;
      }
      return false;
    }
  }
  class Point{
    int x;
    int y;
    public Point(int i,int j){
      x=i;
      y=j;
    }
  }
  class My2048Panel extends JPanel{
    private int[] xindex={SP,2*SP+WID,3*SP+2*WID,4*SP+3*WID};
    private int[] yindex={SP,2*SP+WID,3*SP+2*WID,4*SP+3*WID};
    @SuppressWarnings("deprecation")
 public void paintComponent(Graphics g){
      //background
      super.paintComponent(g);
      for(int i=0;i<xindex.length;i++){
        for(int j=0;j<yindex.length;j++){
          g.setColor(Color.WHITE);
          g.drawRoundRect(xindex[i], yindex[j], WID, WID, WID/5, WID/5);
          g.setColor(new Color(197,183,129));
          g.fillRoundRect(xindex[i], yindex[j], WID, WID, WID/5, WID/5);
        }
      }
      //paint rectangle
      for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
          if(rset[i][j]!=null){
            g.setColor(Color.WHITE);
            g.drawRoundRect(yindex[j], xindex[i], WID, WID, WID/5, WID/5);
            if(rset[i][j].value<128){
              g.setColor((Color)cmap.get(rset[i][j].value));
            }else{
              g.setColor((Color)cmap.get(128));
            }
            g.fillRoundRect(yindex[j], xindex[i], WID, WID, WID/5, WID/5);
            g.setColor(Color.BLACK);
            Font font=new Font("TimesRoman",Font.BOLD,50);
            g.setFont(font);
            FontMetrics fm=Toolkit.getDefaultToolkit().getFontMetrics(font);
            int len=fm.stringWidth(""+rset[i][j].value);
            int hg=fm.getHeight();
            g.drawString(""+rset[i][j].value, yindex[j]+WID/2-len/2, xindex[i]+WID/2+hg/4);
            if(rset[i][j].value==2048 && successFlag==false){
              successFlag=true;
              gameSuccess();
            }
          }
        }
      }
    }
  }
  class GameOverPane extends JPanel{
    public GameOverPane(int w,int h){
      setSize(w,h);
      //setOpaque(false);
    }
    @SuppressWarnings("deprecation")
 public void paintComponent(Graphics g){
      super.paintComponent(g);
      Font font=new Font("TimesRoman",Font.BOLD,80);
      g.setFont(font);
      FontMetrics fm=Toolkit.getDefaultToolkit().getFontMetrics(font);
      int width=fm.stringWidth("Game Over");
      int height=fm.getHeight();
      g.setColor(new Color(255,0,0));
      g.drawString("Game Over!", getWidth()/2-width/2, getHeight()/2-height/2);
    }
  }
  class SuccessPane extends JPanel{
    public SuccessPane(int w,int h){
      setSize(w,h);
      //setOpaque(false);
    }
    public void paintComponent(Graphics g){
      super.paintComponent(g);
      Font font=new Font("TimesRoman",Font.BOLD,80);
      g.setFont(font);
      @SuppressWarnings("deprecation")
  FontMetrics fm=Toolkit.getDefaultToolkit().getFontMetrics(font);
      int width=fm.stringWidth("Success!");
      int height=fm.getHeight();
      g.setColor(new Color(255,0,0));
      g.drawString("Success!", getWidth()/2-width/2, getHeight()/2-height/2);
    }
  }
  class LOGO extends JPanel{
    public LOGO(int w ,int h){
      setSize(w,h);
    }
    @SuppressWarnings("unused")
 public void paintComponent(Graphics g){
      super.paintComponent(g);
      Font font=new Font("TimesRoman",Font.BOLD,60);
      g.setFont(font);
      @SuppressWarnings("deprecation")
  FontMetrics fm=Toolkit.getDefaultToolkit().getFontMetrics(font);
      int width=fm.stringWidth("2048");
      int height=fm.getHeight();
      g.setColor(new Color(255,0,0));
      g.drawString("2048", 20, getHeight()/2+20);
    }
  }
  public class goBackListener implements ActionListener{
    @SuppressWarnings("rawtypes")
 public void actionPerformed(ActionEvent e){
      if(saveList.size()==0){
        goBackButton.setVisible(false);
        return;
      }
      ArrayList arr=(ArrayList)saveList.getLast();
      scoreLabel.setText(""+arr.get(0));
      for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
          int num=(int)arr.get(4*i+j+1);
          if(num!=0){
            rset[i][j]=new RectObject();
            rset[i][j].value=num;
          }else{
            rset[i][j]=null;
          }
        }
      }
      saveList.removeLast();
      repaint();
    }
  }
  public class resetListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
      refreshBest();
      for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
          rset[i][j]=null;
        }
      }
      scoreLabel.setText("0");
      repaint();
      getARandomRect();
      getARandomRect();
    }
  }
  //the applet init
  public void init(){
    Container cp=getContentPane();
    cp.setLayout(null);
    cp.setFocusable(true);
    cp.addKeyListener(kl);
    Font font=new Font("TimesNewman",Font.BOLD,30);
    JLabel sl=new JLabel();
    sl.setLayout(new GridLayout(2,1));
    JLabel sllb=new JLabel("Scores");
    sllb.setFont(font);
    scoreLabel=new JLabel("0");
    scoreLabel.setFont(font);
    sl.add(sllb);
    sl.add(scoreLabel);
    int best=0;
    try{
      File file=new File("BestRecord");
      if(file.exists()){
        RandomAccessFile f=new RandomAccessFile(file,"rw");
        best=f.readInt();
        f.close();
      }
    }catch(FileNotFoundException e){
      best=0;
      e.printStackTrace();
    }catch(IOException e){
      best=0;
      e.printStackTrace();
    }
    JLabel bsl=new JLabel();
    bsl.setLayout(new GridLayout(2,1));
    JLabel jl=new JLabel("Best");
    jl.setFont(font);
    JLabel jl1=new JLabel(""+best);
    jl1.setFont(font);
    bsl.add(jl);
    bsl.add(jl1);
    myp=new My2048Panel();
    LOGO logo=new LOGO(0,0);
    goBackButton=new JButton("UNDO");
    goBackButton.setFont(font);
    goBackButton.addActionListener(new goBackListener());
    goBackButton.addKeyListener(kl);
    JButton jb=new JButton("RESET");
    jb.setFont(font);
    jb.addActionListener(new resetListener());
    jb.addKeyListener(kl);
    sl.setBounds(500,20,200,80);
    bsl.setBounds(300,20,200,80);
    logo.setBounds(0, 0, 600, 100);
    myp.setBounds(0,90,700,700);
    goBackButton.setBounds(700,250,150,60);
    jb.setBounds(700,450,150,60);
    cp.add(sl);
    cp.add(bsl);
    cp.add(logo);
    cp.add(myp);
    cp.add(goBackButton);
    cp.add(jb);
    File f=new File("LASTRECORD");
    if(f.exists()){
      try{
        RandomAccessFile file=new RandomAccessFile(f,"rw");
        int num=file.readInt();
        scoreLabel.setText(""+num);
        for(int i=0;i<4;i++){
          for(int j=0;j<4;j++){
            num=file.readInt();
            if(num!=0){
              rset[i][j]=new RectObject();
              rset[i][j].value=num;
            }
          }
        }
        file.close();
      }catch(FileNotFoundException e){
        e.printStackTrace();
      }catch(IOException e){
        e.printStackTrace();
      }
    }else{
      getARandomRect();
      getARandomRect();
    }
  }
  @SuppressWarnings("unchecked")
 public Game2048(){
    //saveTheStep();
    for(int i=0;i<7;i++){
      cmap.put(label[i], clo[i]);
    }
  }
  //moveLeft
  public void moveLeft(boolean flag){
    clearList(list);
    for(int i=0;i<4;i++){
      int k=0;
      for(int j=0;j<4;j++){
        if(rset[i][j]!=null){
          list[i][k++]=new RectObject(rset[i][j]);
        }
      }
    }
    for(int i=0;i<4 && flag;i++){
      for(int j=0;j<3;j++){
        if(list[i][j]!=null && list[i][j+1]!=null && list[i][j].value==list[i][j+1].value){
          list[i][j].value*=2;
          if(CheckMode==false){
            int sum=Integer.parseInt(scoreLabel.getText());
            sum+=list[i][j].value;
            scoreLabel.setText(""+sum);
          }
          list[i][j+1]=null;
          j++;
        }
      }
    }
    if(isChange()){
      if(CheckMode==false){
        copySet(rset,list);
        repaint();
        moveLeft(false);
      }
      change=true;
    }else{
      repaint();
    }
  }
  //moveRight
  public void moveRight(boolean flag){
    clearList(list);
    for(int i=0;i<4;i++){
      int k=3;
      for(int j=3;j>-1;j--){
        if(rset[i][j]!=null){
          list[i][k--]=new RectObject(rset[i][j]);
        }
      }
    }
    for(int i=0;i<4 && flag;i++){
      for(int j=3;j>0;j--){
        if(list[i][j]!=null && list[i][j-1]!=null && list[i][j].value==list[i][j-1].value){
          list[i][j].value*=2;
          if(CheckMode==false){
            int sum=Integer.parseInt(scoreLabel.getText());
            sum+=list[i][j].value;
            scoreLabel.setText(""+sum);
          }
          list[i][j-1]=null;
          j--;
        }
      }
    }
    if(isChange()){
      if(CheckMode==false){
        copySet(rset,list);
        repaint();
        moveRight(false);
      }
      change=true;
    }else{
      repaint();
    }
  }
  //moveup
  public void moveUp(boolean flag){
    clearList(list);
    for(int j=0;j<4;j++){
      int k=0;
      for(int i=0;i<4;i++){
        if(rset[i][j]!=null){
          list[k++][j]=new RectObject(rset[i][j]);
        }
      }
    }
    for(int j=0;j<4 && flag;j++){
      for(int i=0;i<3;i++){
        if(list[i][j]!=null && list[i+1][j]!=null && list[i][j].value==list[i+1][j].value){
          list[i][j].value*=2;
          if(CheckMode==false){
            int sum=Integer.parseInt(scoreLabel.getText());
            sum+=list[i][j].value;
            scoreLabel.setText(""+sum);
          }
          list[i+1][j]=null;
          i++;
        }
      }
    }
    if(isChange()){
      if(CheckMode==false){
        copySet(rset,list);
        repaint();
        moveUp(false);
      }
      change=true;
    }else{
      repaint();
    }
  }
  //movedown
  public void moveDown(boolean flag){
    clearList(list);
    for(int j=0;j<4;j++){
      int k=3;
      for(int i=3;i>-1;i--){
        if(rset[i][j]!=null){
          list[k--][j]=new RectObject(rset[i][j]);
        }
      }
    }
    for(int j=0;j<4 && flag;j++){
      for(int i=3;i>0;i--){
        if(list[i][j]!=null && list[i-1][j]!=null && list[i][j].value==list[i-1][j].value){
          list[i][j].value*=2;
          if(CheckMode==false){
            int sum=Integer.parseInt(scoreLabel.getText());
            sum+=list[i][j].value;
            scoreLabel.setText(""+sum);
          }
          list[i-1][j]=null;
          i--;
        }
      }
    }
    if(isChange()){
      if(CheckMode==false){
        copySet(rset,list);
        repaint();
        moveDown(false);
      }
      change=true;
    }else{
      repaint();
    }
  }
  //other functions
  private void copySet(RectObject[][] dst, RectObject[][] src){
    for(int i=0;i<4;i++){
      for(int j=0;j<4;j++){
        dst[i][j]=src[i][j];
      }
    }
  }
  //detect whether rset is different from list or not
  private boolean isChange(){
    for(int i=0;i<4;i++){
      for(int j=0;j<4;j++){
        if(rset[i][j]!=null && list[i][j]!=null && !rset[i][j].equals(list[i][j])){
          return true;
        }
        if(rset[i][j]!=null && list[i][j]==null){
          return true;
        }
        if(rset[i][j]==null && list[i][j]!=null){
          return true;
        }
      }
    }
    return false;
  }
  private void clearList(RectObject[][] s){
    for(int i=0;i<s.length;i++){
      for(int j=0;j<s[i].length;j++){
        s[i][j]=null;
      }
    }
  }
  //get a random rectangle
  @SuppressWarnings({ "unchecked", "rawtypes" })
 public void getARandomRect(){
    ArrayList list=new ArrayList();
    for(int i=0;i<4;i++){
      for(int j=0;j<4;j++){
        if(rset[i][j]==null){
          list.add(new Point(i,j));
        }
      }
    }
    if(list.size()==0 && !aDirAble()){
      gameOver();
      return;
    }
    Random rand=new Random();
    int index=rand.nextInt(list.size());
    Point loc=(Point)list.get(index);
    index=rand.nextInt(2);
    rset[loc.x][loc.y]=new RectObject();
    if(index==1){
      rset[loc.x][loc.y].value=4;
    }else{
      rset[loc.x][loc.y].value=2;
    }
  }
  //detect whether there are other steps or not
  public boolean aDirAble(){
    CheckMode=true;
    change=false;
    moveLeft(true);
    moveRight(true);
    moveDown(true);
    moveUp(true);
    CheckMode=false;
    if(change==true){
      return true;
    }else{
      return false;
    }
  }
  public void gameOver(){
    gameOverFlag=true;
    JPanel jl=new GameOverPane(myp.getWidth(),myp.getHeight());
    jl.setBounds(0, 0, 700, 700);
    JButton jb1=new JButton("Again");
    Font font=new Font("TimesRoman",Font.BOLD,30);
    jb1.setOpaque(false);
    jb1.setFont(font);
    JButton jb2=new JButton("Close");
    jb2.setSize(jb1.getSize());
    jb2.setOpaque(false);
    jb2.setFont(font);
    jb1.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        scoreLabel.setText("0");
        myp.remove(jl);
        clearList(rset);
        myp.validate();
        getARandomRect();
        getARandomRect();
        repaint();
        gameOverFlag=false;
        refreshBest();
      }
    });
    jb2.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        refreshBest();
        File f=new File("LASTRECORD");
        if(f.exists()){
          f.delete();
        }
        System.exit(0);
      }
    });
    jl.add(jb1);
    jl.add(jb2);
    myp.add(jl);
    jl.validate();
  }
  public void gameSuccess(){
    JPanel jl=new SuccessPane(myp.getWidth(),myp.getHeight());
    jl.setOpaque(false);
    jl.setBounds(0, 0, 700, 700);
    JButton jb1=new JButton("Continue");
    Font font=new Font("TimesRoman",Font.BOLD,30);
    jb1.setOpaque(false);
    jb1.setFont(font);
    JButton jb2=new JButton("Close");
    jb2.setSize(jb1.getSize());
    jb2.setOpaque(false);
    jb2.setFont(font);
    jb1.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        myp.remove(jl);
        myp.validate();
        repaint();
      }
    });
    jb2.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        refreshBest();
        System.exit(0);
      }
    });
    jl.add(jb1);
    jl.add(jb2);
    myp.add(jl);
    jl.validate();
  }
  @SuppressWarnings("unchecked")
 public void saveTheStep(){
    if(saveList.size()<20){
      @SuppressWarnings("rawtypes")
  ArrayList arr=new ArrayList();
      int score=Integer.parseInt(scoreLabel.getText());
      arr.add(score);
      for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
          if(rset[i][j]!=null){
            arr.add(rset[i][j].value);
          }else{
            arr.add(0);
          }
        }
      }
      saveList.addLast(arr);
    }else{
      saveList.removeFirst();
      saveTheStep();
    }
  }
  public static String title(Object o){
    String t=o.getClass().toString();
    if(t.indexOf("class")!=-1){
      t=t.substring(6);
    }
    return t;
  }
  public static void refreshBest(){
    try {
      int best=0;
      File f=new File("BestRecord");
      RandomAccessFile file;
      if(f.exists()){
        file=new RandomAccessFile(f,"rw");
        best=file.readInt();
        file.seek(0);
      }else{
        file=new RandomAccessFile(f,"rw");
      }
      //System.out.println("The Best score is "+best);
      int cur=Integer.parseInt(scoreLabel.getText());
      if(cur>best){
        file.writeInt(cur);
      }
      file.close();
    } catch (FileNotFoundException e1) {
      e1.printStackTrace();
    }catch(IOException e2){
      e2.printStackTrace();
    }
  }
  @SuppressWarnings("resource")
 public static void saveRecord(){
    try{
      RandomAccessFile file=new RandomAccessFile(new File("LASTRECORD"),"rw");
      int score=Integer.parseInt(scoreLabel.getText());
      file.writeInt(score);
      for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
          if(rset[i][j]!=null){
            file.writeInt(rset[i][j].value);
          }else{
            file.writeInt(0);
          }
        }
      }
    }catch(FileNotFoundException e){
      e.printStackTrace();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
  public static void run(JApplet applet,int width,int height){
    JFrame frame=new JFrame(title(applet));
    frame.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        refreshBest();
        saveRecord();
        //System.out.println("The score is "+scoreLabel.getText());
      }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(applet);
    frame.setSize(width,height);
    applet.init();
    applet.start();
    frame.setVisible(true);
  }
  public static void main(String[] args){
    run(new Game2048(), 900, 800);
  }
}

PS:这里再为大家推荐另两款本站2048游戏供大家参考(JS实现)

在线2048游戏:
http://tools.jb51.net/games/game2048

在线2048小游戏数字版:
http://tools.jb51.net/games/game2048num

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • java实现猜数字小游戏

    java 实现猜数字游戏 随机给定一个数字,猜大小直到正确 package com.swift; import java.util.Random; import java.util.Scanner; public class GuessBigSmall { public static void main(String[] args) { Scanner scan=new Scanner(System.in); Random random = new Random(); int number =

  • Java编写掷骰子游戏

    废话不多说了,直接奔主题. **多线程&&观察者模式 题目要求:<掷骰子>窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰子的总点数小于等于9,则开小,否则开大,然后判断玩家是否押对,如果未押对则扣除下注金额,如果押对则奖励和玩家下注金额相同的金钱. 分析:这个题目要求灵活运用多线程的相关知识,达到点击开始按钮时,有3个线程启动,分别控制3颗骰子的转动,在3颗骰子全部转完以后,回到主线程计算游戏结果. //个

  • 简单实现java数独游戏

    本文实例为大家分享了java数独游戏的具体代码,供大家参考,具体内容如下 打算把javaFx需要的组件装好以后直接用javaFx的,但似乎eclipse的版本不对,安装了也不能用... 数独代码是在之前寒假受命写的,学了一个月java的成果,现在看来有些不足但毕竟是第一个程序,就直接放上来,数独终盘的实现直接用了暴力,时间复杂度有点高,懒得改了直接放代码 终盘实现: import java.util.Random; public class SudokuPuzzleGenerator { pri

  • Java编程经典小游戏设计-打砖块小游戏源码

    [程序中使用的数据结构和符号说明] HitBrick类 GreenBallThread控制小球路线 xUp,yUp,bouncing定义变量存储16位数值形式 x,y小球坐标 xDx,yDy坐标增量 MAX_X,MAX_Y坐标最大值 renew初始化 label标签 Rx,Ry横板坐标 Brick[]砖块 ball小球 HitBrick()定义小球横板及砖块位置坐标 keyPressd(keyEent)定义小球启动键(按空格键启动) keyReleased(keyEvent)接收键盘事件侦听器接

  • Java游戏俄罗斯方块的实现实例

    Java游戏俄罗斯方块的实现实例 java小游戏主要理解应用java Swing,awt等基础组件的知识,通过本例应当掌握面向对象的知识. 实现代码: package cn.hncu.games; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import

  • java swing实现的扫雷游戏及改进版完整示例

    本文实例讲述了java swing实现的扫雷游戏及改进版.分享给大家供大家参考,具体如下: 版本1: package awtDemo; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import jav

  • Java swing框架实现的贪吃蛇游戏完整示例

    本文实例讲述了Java swing框架实现的贪吃蛇游戏.分享给大家供大家参考,具体如下: java是门高级语言,做游戏时适合做后台,但是用它也可以做游戏.闲来无事做的时候可以用来写点小游戏,练习练习预防早衰哈哈! 闲话不说了 下面是以前练习的作品,不怕大家笑话,那个时候用了一个礼拜才做出来的. 源码如下供大家学习. 使用的是java的 swing  Jframe Jpanel JButton   当然你也可以使用awt 先来看看运行效果: 具体代码: package Tcs; /** * * *

  • Java编程实现打地鼠文字游戏实例代码

    控制台输入数字,与随机数匹配,匹配正确则返回"打中了!" 匹配错误则返回"太遗憾!没打中!" package hitmouse; import java.util.Random; import java.util.Scanner; public class HitMouse { public static void main(String[] args) { // TODO Auto-generated method stub int[] map = new int

  • Java版坦克大战游戏源码示例

    整理文档,搜刮出一个Java版坦克大战游戏的代码,稍微整理精简一下做下分享. package tankwar; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.File; import java.io.FileInputStream; imp

  • Java实现的简单掷骰子游戏示例

    本文实例讲述了Java实现的简单掷骰子游戏.分享给大家供大家参考,具体如下: 要求: 掷两个骰子,每个骰子有六面, 分别为1.2.3.4.5.6.检查这两个骰子的和. 如果为2.3或12你就输了:如果和是7或者11你就赢了. 但如果和是其他数字(例如4.5.6.8.9或者10), 就确定了一个点.继续掷骰子直至抛出一个7或者 掷出和刚才相同的点数.如果掷出的是7,你就输了. 如果掷出的点数和你前一次掷出的点数相同, 你就赢了. java实现代码: enum Status { Win, Lose,

  • Java实现的剪刀石头布游戏示例

    本文实例讲述了Java实现的剪刀石头布游戏.分享给大家供大家参考,具体如下: ChoiceAnswer.java public class ChoiceAnswer { String texts[] = { "石头", "剪刀", "布" }; int value; // [1]石头\t[2]剪刀\t[3]布 String getText() { return texts[value - 1]; } ChoiceAnswer(int value)

  • java实现简单的弹球游戏

    弹球游戏实现原理: 隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint()方法来实现.这里我们用了键盘监听事件.Timer类等. 游戏说明: 该弹球游戏中的小球会随着时间增加速度且速度最多是横向速度和垂直速度为10.当小球的y坐标(垂直坐标)大于球拍的y坐标(垂直坐标)即判断游戏结束.控制台显示的是小球的x方向的速度和y方向的速度. import java.awt.*

随机推荐