Java实现动物换位游戏完整 过程详解

目录
  • 效果展示
    • 一、效果展示
      • 1.游戏界面
      • 2.测试界面
    • 二、项目介绍
      • 1.总体需求
      • 2.总体设计
  • 三、代码展示
    • 1.图形界面设计(gui包)
    • 2.用户操作设计(data包)
      • ① Animal类
      • ② LeftAnimal类
      • ③ RightAnimal类
      • ④ Point类
      • ⑤ ViewForAnimal类
    • 3.游戏视图设计(view包)
      • ① AnmialView类
      • ② GamePanel类
      • ③ HandleAnimalMove类
      • ④ HandleRedo类
      • ⑤ HandleReStart类
  • 四、代码测试
  • 五、所需图像
  • 六、总结

效果展示

一、效果展示

1.游戏界面

开始

成功

2.测试界面

二、项目介绍

1.总体需求

(1)在水平排列的7块石头上的左右各有3个类型相同的2种动物,中间的石头上没有动物。

(2)用鼠标单击一个动物:

①若“该动物前方的石头”上没有动物,该动物就跳跃到该石头上。

②若“该动物前方的石头”上有动物,但隔位的石头上无动物,该动物就越过自己前面的动物跳到隔位的石头上。

③其他情形时,该动物不跳跃(跳跃时不能越过2块石头)。

(3)左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。

(4)用户可以通过单击界面上提供的按钮,随时撤销上一步的操作。

(5)用户可以随时单击界面上的按钮,重新开始游戏。

2.总体设计

项目结构共四个package,分别是data,test,gui,view。具体实现封装的12个类如图所示:

三、代码展示

1.图形界面设计(gui包)

主类:AppWindows类

AppWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始执行。

package ch1.gui;
import javax.swing.*;
import java.awt.*;
import ch1.view.GamePanel;
public class AppWindow extends JFrame {
    GamePanel gamePanel;
    public AppWindow(){
       setTitle("动物换位游戏");
       gamePanel = new GamePanel();
       gamePanel.setAnimalCount(6);
       gamePanel.setLeftAnimalImage("程序发布/image/cat.jpg");
       gamePanel.setRightAnimalImage("程序发布/image/dog.jpg");
       add(gamePanel,BorderLayout.CENTER);
       gamePanel.setBackground(Color.white);
       JPanel northP = new JPanel();
       northP.add(gamePanel.buttonReStart);
       northP.add(gamePanel.buttonRedo);
       add(northP,BorderLayout.NORTH);
       setBounds(60,60,9*gamePanel.width+9*gamePanel.gap,300);
       validate();
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
    }
    public static void main(String args[] ){
       AppWindow win = new AppWindow();
    }
}

2.用户操作设计(data包)

① Animal类

Animal类创建的对象是AppWindow类的重要成员之一,用来表示“动物”。

package ch1.data;
public abstract class Animal {
    String name ;
    Point [] allCanAtPoint;    //全部点位置
    Point point;               //动物当前所在的点位置
    ViewForAnimal animalView;  //动物的外观视图
    public void setAtPoint(Point p) {
        if(p!=null){
           point = p;
           point.setIsHaveAnimal(true);
           point.setAtPointAnimal(this);
        }
    }
    public Point getAtPoint() {
        return point;
    }
    public void setAllCanAtPoint(Point [] point){
        allCanAtPoint = point;
    }
    public void setAnimalView(ViewForAnimal animalView) {
        this.animalView = animalView;
        animalView.setAnimal(this);
    }
    public ViewForAnimal getAnimalView() {
         return animalView;
    }
    public void setName(String s) {
        name = s;
    }
    public String getName() {
        return name;
    }
    public abstract boolean move();
}

② LeftAnimal类

LeftAnimal类是Animal的一个子类,创建的对象是AppWindow类的成员之一,表示“左动物”。

package ch1.data;
public class LeftAnimal extends Animal{
   public boolean move(){
      int k = -1;
      boolean successMove = false;
      Point p = getAtPoint();
      for(int i=0;i<allCanAtPoint.length;i++){
         if(allCanAtPoint[i].equals(p)){
            k = i; //找到动物当前所处的位置:allCanAtPoint[k]
            break;
         }
      }
      if(k==allCanAtPoint.length-1){//已经在最右面的点位置
          return false;
      }
      if(allCanAtPoint[k+1].isHaveAnimal()==false) { //前面位置上没有动物
         this.setAtPoint(allCanAtPoint[k+1]);
         successMove = true;
         p.setAtPointAnimal(null);
         return successMove ;
      }
      if((k+1)==allCanAtPoint.length-1){ //前面位置上是已经到达终点的动物
          return false;
      }
      if(allCanAtPoint[k+2].isHaveAnimal()==false) {//前方隔位上没有动物
         this.setAtPoint(allCanAtPoint[k+2]);
         successMove = true;
         p.setAtPointAnimal(null);
         return successMove ;
      }
      return successMove ;
   }
}

③ RightAnimal类

RightAnimal类是Animal的一个子类,创建的对象是AppWindow类的成员之一,表示“右动物”。

package ch1.data;
public class RightAnimal extends Animal{
   public boolean move(){
      int k = -1;
      boolean successMove = false;
      Point p = getAtPoint();
      for(int i=0;i<allCanAtPoint.length;i++){
         if(allCanAtPoint[i].equals(p)){
            k = i;
            break;
         }
      }
      if(k==0){  //已经在最左面的点位置
          return false;
      }
      if(allCanAtPoint[k-1].isHaveAnimal()==false) {//前面位置上没有动物
         this.setAtPoint(allCanAtPoint[k-1]);//动物到达allCanAtPoint[k-1]点
         successMove = true;
         p.setAtPointAnimal(null);           //p点设置为无动物
         return successMove ;
      }
      if((k-1)==0){   //前面位置上是已经到达终点的动物
          return false;
      }
      if(allCanAtPoint[k-2].isHaveAnimal()==false) {//前方隔位上没有动物
         this.setAtPoint(allCanAtPoint[k-2]); //动物到达allCanAtPoint[k-2]点
         successMove = true;
         p.setAtPointAnimal(null);           //p点设置为无动物
         return successMove ;
      }
      return successMove ;
   }
}

④ Point类

Point类负责创建确定位置的对象,使用Point对象,可以确定动物以及石头对象在窗体中的位置。

package ch1.data;
public class Point{
    int x,y;
    boolean haveAnimal;
    Animal animal=null; //在该点位置上的动物
    public void setX(int x){
        this.x=x;
    }
    public void setY(int y){
        this.y=y;
    }
    public boolean isHaveAnimal(){
        return haveAnimal;
    }
    public void setIsHaveAnimal(boolean boo){
        haveAnimal=boo;
    }
    public int getX(){
        return x;
    }
    public int getY(){
        return y;
    }
    public void setAtPointAnimal(Animal animal){
        this.animal=animal;
        if(animal!=null) {
           haveAnimal = true;
        }
        else {
           haveAnimal = false;
        }
    }
    public Animal getAtPointAnimal(){
        return animal;
    }
}

⑤ ViewForAnimal类

该类是JPanel类的一个子类,用于实现动物方法的定义。

package ch1.data;
import javax.swing.JPanel;
public abstract class ViewForAnimal extends JPanel {
    public abstract void setAnimal(Animal animal);
    public abstract void setImage(String name);
    public abstract Animal getAnimal();
    public abstract void setAnimalViewLocation(int x,int y);
    public abstract void setAnimalViewSize(int w,int h);
}

3.游戏视图设计(view包)

① AnmialView类

AnimalView类是ViewForAnimal的一个子类,实现对动物操作的各种方法。

package ch1.view;
import java.awt.*;
import ch1.data.*;
public class AnimalView extends ViewForAnimal{
   Animal animal;
   Image image;
   Toolkit tool;
   public AnimalView() {
      tool = getToolkit();
   }
   public void setAnimal(Animal animal){
      this.animal = animal;
   }
   public void setImage(String name){
      image = tool.getImage(name);
      repaint();
   }
   public Animal getAnimal() {
      return animal;
   }
   public void setAnimalViewLocation(int x,int y){
      setLocation(x,y);
   }
   public void setAnimalViewSize(int w,int h){
      setSize(w,h);
   }
   public void paintComponent(Graphics g){
      super.paintComponent(g);
      int w=getBounds().width;
      int h=getBounds().height;
      g.drawImage(image,0,0,w,h,this);
   }
}

② GamePanel类

GamePanel类是JPanel的子类,用于游戏视图的初始化。

package ch1.view;
import javax.swing.*;
import java.awt.*;
import ch1.data.Animal;
import ch1.data.Point;
import ch1.data.ViewForAnimal;
import ch1.data.LeftAnimal;
import ch1.data.RightAnimal;
import java.util.*;
import java.awt.geom.*;
public class GamePanel extends JPanel {
    public int animalCount = -1;
    public Point [] point ;
    Animal []  leftAnimal,rightAnimal;
    public ViewForAnimal [] leftAnimalView,rightAnimalView;//动物视图
    public int width =90,height=70;  //动物视图的大小
    public int gap = 2;              //动物之间的间隙
    public JButton buttonRedo;//撤销按钮
    public JButton buttonReStart;//重新开始游戏
    public Stack<Point> saveAnimalStep; //存放动物走动的位置,以便恢复
    HandleAnimalMove handleAnimalMove;//负责处理MouseEvent的监视器
    HandleRedo handleRedo;           //负责ActionEvent的监视器
    HandleReStart handleReStart;    //负责ActionEvent的监视器
    public GamePanel(){
       setLayout(null);
       buttonRedo = new JButton("撤销");
       buttonReStart = new JButton("重新开始");
       saveAnimalStep = new Stack<Point>();
    }
    public void setAnimalCount(int n){
       if(n%2 != 0 ||n<=1) {
          System.out.println(n+"的个数不合理");
          System.exit(0);
       }
       removeAll();  //首先移出曾添加到该容器中的全部组件
       animalCount = n;
       initPoitAndAnimal();  //初始化动物和位置对象
       initLeftAnimalView(); //初始化左边的动物视图
       initRightAnimalView();
       registerListener();   //注册监视器
    }
    private void initPoitAndAnimal(){//初始化动物和位置对象
       point = new Point[animalCount+1];
       int posionX = width; //点的位置的x坐标
       int posionY = height;
       for(int i=0;i<point.length;i++) {
           point[i] = new Point();
           point[i].setX(posionX);
           point[i].setY(posionY);
           posionX = posionX+width+gap;
       }
       int m = animalCount/2;
       leftAnimal = new LeftAnimal[m];
       rightAnimal = new RightAnimal[m];
       for(int i =0;i<leftAnimal.length;i++ ){
          leftAnimal[i] = new LeftAnimal();
          leftAnimal[i].setAtPoint(point[i]);
          leftAnimal[i].setAllCanAtPoint(point);
       }
       for(int i =0;i<rightAnimal.length;i++ ){
          rightAnimal[i] = new RightAnimal();
          rightAnimal[i].setAtPoint(point[m+1+i]);
          rightAnimal[i].setAllCanAtPoint(point);
       }
    }
    private void initLeftAnimalView(){//初始化左边的动物视图
       int m = animalCount/2;
       leftAnimalView = new ViewForAnimal[m];
       for(int i =0;i<leftAnimalView.length;i++ ){
          leftAnimalView[i] = new AnimalView();
          leftAnimal[i].setAnimalView(leftAnimalView[i]);
          Point p = leftAnimal[i].getAtPoint();
          int x = p.getX();
          int y = p.getY();
          add(leftAnimalView[i]);
          //动物视图所在位置和动物所在点相同:
          leftAnimalView[i].setAnimalViewLocation(x,y);
          leftAnimalView[i].setAnimalViewSize(width,height);
       }
    }
    private void initRightAnimalView(){//初始化右边的动物视图
       int m = animalCount/2;
       rightAnimalView = new ViewForAnimal[m];
       for(int i =0;i<rightAnimalView.length;i++ ){
          rightAnimalView[i] = new AnimalView();
          rightAnimal[i].setAnimalView(rightAnimalView[i]);
          Point p = rightAnimal[i].getAtPoint();
          int x = p.getX();
          int y = p.getY();
          add(rightAnimalView[i]);
          rightAnimalView[i].setAnimalViewLocation(x,y);
          rightAnimalView[i].setAnimalViewSize(width,height);
       }
    }
    private void registerListener(){
        handleAnimalMove = new HandleAnimalMove(this);
        //监视用户在动物视图上触发的MouseEvent事件:
        for(int i =0;i<rightAnimalView.length;i++ ){
           rightAnimalView[i].addMouseListener(handleAnimalMove);
        }
        for(int i =0;i<leftAnimalView.length;i++ ){
           leftAnimalView[i].addMouseListener(handleAnimalMove);
        }
        handleRedo = new HandleRedo(this);
        handleReStart = new HandleReStart(this);
        //监视用户在按钮上触发的ActionEvent事件:
        buttonRedo.addActionListener(handleRedo);
        buttonReStart.addActionListener(handleReStart);
    }
    public void setLeftAnimalImage(String pic){
       if(animalCount==-1)
           return;
       for(int i =0;i<leftAnimalView.length;i++ ){
          leftAnimalView[i].setImage(pic);
       }
    }
    public void setRightAnimalImage(String pic){
       if(animalCount==-1)
           return;
       for(int i =0;i<rightAnimalView.length;i++ ){
          rightAnimalView[i].setImage(pic);
       }
    }
    public void paintComponent(Graphics g){
       int penHeight =12;  //画笔的高度
       super.paintComponent(g);
       int xStart =width+gap;
       int yStart =2*height+penHeight/2;
       int xEnd =(animalCount+2)*width+(animalCount+1)*2;
       int yEnd =2*height+penHeight/2;
       Line2D line=new Line2D.Double(xStart,yStart,xEnd,yEnd);
       Graphics2D g_2d=(Graphics2D)g;
       g_2d.setColor(Color.blue);
       BasicStroke bs=
       new BasicStroke(penHeight,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
       g_2d.setStroke(bs);
       g_2d.draw(line);
   }
}

③ HandleAnimalMove类

该类所创建的对象负责处理鼠标事件,实现动物位置的移动。

package ch1.view;
import java.awt.event.*;
import javax.swing.JOptionPane;
import ch1.data.Point;
import ch1.data.Animal;
import ch1.data.ViewForAnimal;
import ch1.data.LeftAnimal;
import ch1.data.RightAnimal;
public class HandleAnimalMove extends MouseAdapter {
     GamePanel panel;
     HandleAnimalMove(GamePanel panel){
        this.panel = panel;
     }
     public void mousePressed(MouseEvent e){
        ViewForAnimal animalView = (ViewForAnimal)e.getSource();
        Animal animal = animalView.getAnimal();
        Point pStart = animal.getAtPoint(); //得到动物移动前所在点
        if(animal.move()) {
           Point pEnd = animal.getAtPoint();//得到动物移动后所在点
           int x = pEnd.getX();
           int y = pEnd.getY();
           animalView.setAnimalViewLocation(x,y);//让动物视图所在位置和动物所在点相同
           panel.saveAnimalStep.push(pStart);
           panel.saveAnimalStep.push(pEnd);
        }
    }
    public void mouseReleased(MouseEvent e){
         boolean success = true;
         int n =panel.animalCount/2;
         for(int i=0;i<n;i++){
            Animal animal=panel.point[i].getAtPointAnimal();
            success = success&&(animal instanceof RightAnimal);
            animal=panel.point[n+1+i].getAtPointAnimal();
            success = success&&(animal instanceof LeftAnimal);
            if(success == false)
              break;
         }
         if(success) {
            JOptionPane.showMessageDialog(null,"您成功了","消息框",
                                             JOptionPane.INFORMATION_MESSAGE);
         }
    }
}

④ HandleRedo类

该类所创建的对象负责处理鼠标事件,实现鼠标操作的撤销。

package ch1.view;
import ch1.data.Point;
import ch1.data.Animal;
import ch1.data.ViewForAnimal;
import java.awt.event.*;
public class HandleRedo implements ActionListener {
     GamePanel panel;
     HandleRedo(GamePanel panel){
        this.panel = panel;
     }
     public void actionPerformed(ActionEvent e){ //撤销移动动物的操作
           if(panel.saveAnimalStep.empty())
               return;
           Point pEnd = panel.saveAnimalStep.pop();
           Point pStart = panel.saveAnimalStep.pop();
           Animal animal = pEnd.getAtPointAnimal();
           pEnd.setIsHaveAnimal(false);
           pEnd.setAtPointAnimal(null);
           animal.setAtPoint(pStart);
           ViewForAnimal animalView =animal.getAnimalView();
           int x = pStart.getX();
           int y = pStart.getY();
           animalView.setAnimalViewLocation(x,y);//让动物视图所在位置和动物所在点相同
    }
}

⑤ HandleReStart类

该类所创建的对象负责处理鼠标事件,实现游戏的重开功能。

package ch1.view;
import ch1.data.ViewForAnimal;
import java.awt.event.*;
public class HandleReStart implements ActionListener {
     GamePanel panel;
     HandleReStart(GamePanel panel){
        this.panel = panel;
     }
     public void actionPerformed(ActionEvent e){ //处理重新开始
       panel.saveAnimalStep.clear();
       for(int i=0;i<panel.point.length;i++) {
           panel.point[i].setIsHaveAnimal(false);
       }
       for(int i =0;i<panel.leftAnimal.length;i++ ){
           panel.leftAnimal[i].setAtPoint(panel.point[i]);
           int x = panel.point[i].getX();
           int y = panel.point[i].getY();
           //让动物视图所在位置和动物所在点相同
           ViewForAnimal animalView =panel.leftAnimal[i].getAnimalView();
           animalView.setAnimalViewLocation(x,y);
       }
       for(int i =0;i<panel.rightAnimal.length;i++ ){
           int m = panel.animalCount/2;
           panel.rightAnimal[i].setAtPoint(panel.point[m+1+i]);
           int x = panel.point[m+1+i].getX();
           int y = panel.point[m+1+i].getY();
           //让动物视图所在位置和动物所在点相同
           ViewForAnimal animalView =panel.rightAnimal[i].getAnimalView();
           animalView.setAnimalViewLocation(x,y);
       }
     }
}

四、代码测试

这里我们创建test包,实现AppTest类来进行代码的测试,代码如下:

package ch1.test;
import ch1.data.*;
public class AppTest {
   public static void main(String [] args) {
       Point [] point = new Point[7];
       for(int i=0;i<point.length;i++) {
           point[i] = new Point();
           point[i].setX(i);
           point[i].setY(10);
       }
       Animal [] left = new Animal[3];
       Animal [] right = new Animal[3];
       for(int i =0;i<left.length;i++ ){
          left[i] = new LeftAnimal();
          left[i].setName("猫"+i);
          left[i].setAtPoint(point[i]);
          left[i].setAllCanAtPoint(point);
       }
       for(int i =0;i<right.length;i++ ){
          right[i] = new RightAnimal();
          right[i].setName("狗"+i);
          right[i].setAtPoint(point[4+i]);
          right[i].setAllCanAtPoint(point);
       }
       input(point);
       if(right[0].move())
         input(point);
       if(left[2].move())
         input(point);
       if(left[1].move())
         input(point);
       if(right[0].move())
         input(point);
       if(right[1].move())
         input(point);
       if(right[2].move())
         input(point);
       if(left[2].move())
         input(point);
       if(left[1].move())
         input(point);
       if(left[0].move())
         input(point);
       if(right[0].move())
         input(point);
       if(right[1].move())
         input(point);
       if(right[2].move())
         input(point);
       if(left[1].move())
         input(point);
       if(left[0].move())
         input(point);
       if(right[2].move())
         input(point);
    }
    static void input(Point [] point){
       for(int i=0;i<point.length;i++){
          Animal animal=point[i].getAtPointAnimal();
          if(animal!=null)
             System.out.print(animal.getName());
          else
            System.out.print("   ");
       }
       System.out.println();
    }
}

五、所需图像

预备名字分别为dog.jpg和cat.jpg的图像文件,它们分别是左右动物所使用的图像。

dog.jpg

cat.jpg

六、总结

本项目是很多大学课程设计中常见的题目之一,通过该项目的实现,可以使开发者巩固所学Java语言知识,增进Java语言编辑基本功,掌握JDK、IDEA等开发工具的运用,拓宽常用类库的应用。

通过该项目的实操,开发者可以把所学及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

到此这篇关于Java实现动物换位游戏完整 过程详解的文章就介绍到这了,更多相关Java动物换位内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java+JFrame实现贪吃蛇小游戏

    分享一个Java贪吃蛇小游戏,主要用到的是Java的JFrame,适合初学者. 首先创建一个合适大小的窗口,我这里是900*720 package com.lzijin;   /*   @Auther: lzijin  * @Date: 2021/11/5 - 11 - 05 - 22:06  * @Description: com.lzijin  * @version: 16.0  */   import javax.swing.JFrame;   public class Start {  

  • 用java实现扫雷游戏

    用java做出简单一个扫雷游戏1.创造窗口2.定义数据结构以及初始化3.窗体按钮4.埋雷5.计算周围雷的数量6.Banner设置7.游戏胜利还是失败8.空白级联打开(实现点击一个即可打开多个)9.最终游戏界面总结1.创造窗口   //创建扫雷窗口界面      public Saolei() {                    frame.setSize(600,700);            frame.setResizable(false);//设置窗口尺寸不能变化         

  • java实现扫雷游戏入门程序

    本文实例为大家分享了java实现扫雷游戏入门程序的具体代码,供大家参考,具体内容如下 分析: 1.首先布一个10*10的雷阵,即二维数组map,每个地方都为0 2.再在雷阵中随机选取10个位置设置为雷,雷用-1表示,即map[i][j] = -1; 3.计算雷周围的数.这里有两种方法. 第一种是用一个二维数组保存所有雷的位置,然后遍历所有的雷,查看雷周围的8个位置,如果是值-1就不做++,如果值不是-1就做++. 第二种是遍历所有不为雷的地方,然后再计算它周围的雷的数目,周围的雷的数目就是该位置

  • Java实现飞机小游戏

    本文实例为大家分享了Java实现飞机小游戏的具体代码,供大家参考,具体内容如下 该小游戏使用java语言实现,使用工具idea. 共写9个类 Constant:Explode:GameObject:GameUtil:Plane:Shell:image:images:Plan: 本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 1,Constant:专门放常量 package com.game2; //专门放常量的一个类 public class

  • Java实现飞机大战游戏 附完整源码

    目录 飞机大战详细文档 实现效果: 结构设计 详细分析 Main界面类使用边框布局,给面板分三个区,如图所示 绘制背景地图 飞行道具类UML图 绘制线程: 如何让我们的游戏动起来 背景的绘制 我的飞机的绘制 移动线程 如何控制我的飞机移动? 敌方飞机线程 : 如何生成敌方飞机呢? 敌方子弹线程 : 使每一个敌方飞机开火 检测碰撞线程 : 在子弹与敌机碰撞时,移除敌机 其他功能:显示玩家hp,掉落道具,得分,升级,更换地图 飞机大战详细文档 文末有源代码,以及本游戏使用的所有素材,将plane2文

  • Java基于面向对象实现一个战士小游戏

    目录 一.思路 二.代码实现 设计一个游戏系统,在该系统当中拥有战士 Soldier 角色:,每个角色拥有自己的名字 name .等级 level.生命力 hp ,攻击力 atk.防御力 def:,战士都有普通攻击行为 attack,其实现为根据自己的攻击力减去 被攻击对象的防御力 从而得到对方的失血量:,请设计这个系统中有哪些类,分别有什么属性和行为,有什么关联关系,并在main方法中调用查看效果. 一.思路 首先,我们知道在系统中有个战士的角色叫Soldier,Soldier角色拥有自己的名

  • Java使用定时器编写一个简单的抢红包小游戏

    目录 1.新建项目 2. 添加 计时器,按钮组件 3.抢红包业务逻辑 4.效果演示 1.新建项目 2. 添加 计时器,按钮组件 <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:widt

  • java实现飞机大战小游戏

    本文实例为大家分享了java实现飞机大战游戏的具体代码,供大家参考,具体内容如下 MyPanel类 package  P; import java.awt.Font; import java.awt.Graphics; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.u

  • Java实现动物换位游戏完整 过程详解

    目录 效果展示 一.效果展示 1.游戏界面 2.测试界面 二.项目介绍 1.总体需求 2.总体设计 三.代码展示 1.图形界面设计(gui包) 2.用户操作设计(data包) ① Animal类 ② LeftAnimal类 ③ RightAnimal类 ④ Point类 ⑤ ViewForAnimal类 3.游戏视图设计(view包) ① AnmialView类 ② GamePanel类 ③ HandleAnimalMove类 ④ HandleRedo类 ⑤ HandleReStart类 四.代

  • Java小程序赛马游戏实现过程详解

    这是当时做的一个小游戏,大概就是程序开始后,会进入用户登录界面,用户输入自己的姓名和密码后,选择登录会进入到赛马比赛的界面,这时可以看见赛马场和马匹的编号,用户可以选择任何一个编号的马进行投注,输入有效的投注金额(因为系统设置了初始金额,所以不得投注的超过初始金额).投注完成后用户可以选择开始比赛,赛马期间用户不得进行任何操作,赛马结束后,用户可以重新进行新一轮的赛马比赛,方法上同. 程序流程图: 一.赛马比赛模块 其中此模块包括对画出马匹和赛道部分,通过使用Draw类来向Jpanel面板中添加

  • 使用Matlab制作大富翁小游戏的过程详解

    目录 1.自定义头像及名称 2.买地.收费.破产 3.部分代码展示 gui_init.m self_init.m 4.修改记录 5.下载地址 大富翁大家都玩过,走到建筑的位置可以买地,第二圈走到买过的地可以升级,别人经过后需要付过路费,每次经过起点都会获得一定资金,玩到最后还没破产的就是胜者,这里我用MATLAB制作了一款MATLAB版的大富翁小游戏: 1.自定义头像及名称 点击方框内加号可换头像,点击文本区域可改昵称: 当然即使不换头像点击开始后,也会自动分配头像和名称: 2.买地.收费.破产

  • java通过Jsoup爬取网页过程详解

    这篇文章主要介绍了java通过Jsoup爬取网页过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一,导入依赖 <!--java爬虫--> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.3</version> </depe

  • java property配置文件管理工具框架过程详解

    这篇文章主要介绍了java property配置文件管理工具框架过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 property property 是 java 实现的 property 框架. 特点 优雅地进行属性文件的读取和更新 写入属性文件后属性不乱序 灵活定义编码信息 使用 OO 的方式操作 property 文件 支持多级对象引用 快速开始 环境依赖 Maven 3.x Jdk 1.7+ Maven 引入依赖 <depende

  • Java实现将PPT转为OFD过程详解

    本文以Java后端程序代码展示如何实现将PPT幻灯片转成OFD格式.下面是具体步骤. 步骤1:安装PPT库Spire.Presentation for Java 方法一.通过Maven仓库安装.在pom.xml文件中配置如下内容: <repositories> <repository> <id>com.e-iceblue</id> <url>https://repo.e-iceblue.cn/repository/maven-public/<

  • Java实现经典大富翁游戏的示例详解

    目录 前言 主要设计 功能截图 代码实现 总结 前言 大富翁,又名地产大亨.是一种多人策略图版游戏.参与者分得游戏金钱,凭运气(掷骰子)及交易策略,买地.建楼以赚取租金.英文原名monopoly意为“垄断”,因为最后只得一个胜利者,其余均破产收场. <大富翁>游戏是用java语言实现,采用了swing技术进行了界面化处理,设计思路用了面向对象思想. 主要需求 可多人参与的大富翁游戏,玩家有初始资金,通过掷骰子,玩家移动指定骰子点数步骤,根据对应格子上的交易策略,来决定是赚钱还是亏钱,其他玩家破

  • 基于Python制作炸金花游戏的过程详解

    目录 前言 一.思路 二.解决方案 三.总结 前言 <诈金花>又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏.比如JJ比赛中的诈金花(赢三张),具有独特的比牌规则.游戏过程中需要考验玩家的胆略和智慧.--<百度百科> 前几天在交流群里边,有个叫[^-^]的粉丝分享了一道扑克牌诈金花的题目,要求用Python实现,题目如下: 自己写一个程序,实现发牌.比大小判断输赢. 游戏规则: 一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢. 有以下几种牌: 豹子:三张一样的牌,

  • Java实现简易拼图游戏的方法详解

    目录 效果展示 游戏结构 实现代码 效果展示 介绍:游戏共有五张图片可以选择,分成了4 X 4 十六个方格,点击开始就可以开始游戏.游戏运行的截图如下: 游戏结构 实现代码 代码如下:MedleyGame.java类 package game.medleyPicture; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.even

  • Java使用JSONPath解析JSON完整内容详解

    JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容. maven中添加jar包 JsonPath可在Central Maven存储库中找到. Maven用户将其添加到您的POM. com.jayway.jsonpath json-path 2.2.0 操作符 操作 说明 $

随机推荐