JAVA期末大作业 中国跳棋 您所在的位置:网站首页 跳棋俩人对战怎么玩 JAVA期末大作业 中国跳棋

JAVA期末大作业 中国跳棋

#JAVA期末大作业 中国跳棋| 来源: 网络整理| 查看: 265

  PS:这学期期末成绩差不多出完了,接下来会陆续把这学期课程中的代码陆续扔到这里来以便后人****,同时自己也留个纪念。

  本学期选了java选修,期末大作业面向GitHub编程写了个中国跳棋。代码中还有写小bug,不过懒得调了...

  update:github

   

 1.游戏介绍

  中国跳棋,简称跳棋,是一种可以让二至六人一起玩的棋,棋盘为六角星形状,棋子一般分为六种颜色,每种颜色有10或15枚棋子(或弹珠),每一位玩家占一个角,执一种颜色的棋子,如果玩的人数较,也能每人执两种颜色的棋子玩。

游戏规则如下:

先将一种颜色的棋子按规则全部放在一个角上,各人循顺时针或逆时针方向轮流走子,每次只能动一枚棋子,全部棋子先到达对角那一边的为赢家。棋子有两种走法:

1)一枚棋子移动到相邻六格其中一格。

2)“搭桥”:自己的棋子(A)同一条直线上还有一枚棋子(B),不限属于哪一方,大家之间没有任何棋子阻隔。如果B的另一方也没有棋子阻隔,A就可以跳到B的相反方向,而且和两枚棋子原来的距离一样。跳跃可以一直进行下去,直到没有前进的路径为止。如果有循环情况,可在任意一处停下。

2.项目介绍

    1)本跳棋project支持两人、四人、六人跳棋对战

    2)具有计时功能,可显示当前时间,同时也可判断当前玩家是否超时

    3)游戏可暂停

    4)可保存当前局面,从本地打开已有文件(文件I/O)

 3.游戏界面

  4.工程布局(太懒了直接把所有class写在了一个文件里)

 

   5.代码

  

1 import java.awt.Color; 2 import java.awt.Font; 3 import java.awt.Image; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.awt.event.KeyEvent; 7 import java.awt.event.MouseAdapter; 8 import java.awt.event.MouseEvent; 9 import java.io.File; 10 import java.io.FileNotFoundException; 11 import java.io.IOException; 12 import java.io.PrintWriter; 13 import java.text.SimpleDateFormat; 14 import java.util.Date; 15 import java.util.Scanner; 16 17 import javax.imageio.ImageIO; 18 import javax.management.MBeanOperationInfo; 19 import javax.swing.ImageIcon; 20 import javax.swing.JFileChooser; 21 import javax.swing.JFrame; 22 import javax.swing.JLabel; 23 import javax.swing.JLayeredPane; 24 import javax.swing.JMenu; 25 import javax.swing.JMenuBar; 26 import javax.swing.JMenuItem; 27 import javax.swing.JOptionPane; 28 29 30 31 public class ChineseChecker { 32 33 public static MyFrame myFrame; 34 public static int numberOfPlayers; //游戏玩家的数量 35 public static boolean numbersDone = false;//游戏玩家数量是否设定完毕 36 public static boolean gameStatus = false;//游戏状态(是否暂停) 37 public static char[] series = new char[6];//六种棋子 38 public static int currentIndex = 0;//当前下标 39 public static String pieceToMove;//将要移动的棋子 40 public static int []piecePos;//记录棋子位置 41 public static boolean isPieceToMoveAcquired = false;//是否已经选中将要移动的棋子 42 public static boolean isTheStartingOfTheGame = false;//游戏是否开始 43 public static boolean isPositionToGoToAcquired = false;//将要去的位置是否设定完毕 44 public static int[] posToGoTo; 45 public static boolean isANewGame = false; 46 47 public static void main(String[] args) { 48 // TODO Auto-generated method stub 49 myFrame = new MyFrame();//实例化窗口 50 myFrame.setSize(710, 870);//设置窗口大小 51 myFrame.setVisible(true);//窗口可见 52 Pieces pieces = new Pieces();//实例化棋子类 53 54 /**等待设定游戏玩家数量**/ 55 while(!numbersDone){ 56 try { 57 Thread.sleep(500); 58 } catch (InterruptedException e) { 59 // TODO Auto-generated catch block 60 e.printStackTrace(); 61 } 62 } 63 numbersDone = false; 64 65 /* 66 * 游戏分为双人对战,四人对战和六人对战 67 */ 68 switch (numberOfPlayers) { 69 case 2: 70 series[0] = 'D';series[1] = 'A'; 71 break; 72 case 4: 73 series[0] = 'F';series[1] = 'B';series[2] = 'C';series[3] = 'E'; 74 break; 75 case 6: 76 series[0] = 'F';series[1] = 'A';series[2] = 'B';series[3] = 'C';series[4] = 'D';series[5] = 'E'; 77 break; 78 default: 79 break; 80 } 81 //pieces.init(); 82 myFrame.init(series); 83 initPlayers(series); 84 85 pieces.init(); 86 87 /**一旦玩家数量设定完成,游戏开始**/ 88 isTheStartingOfTheGame = true; 89 90 while (true) { 91 Trace.isSkipped = false; 92 93 Trace.nextStep(); 94 95 //展示当前玩家 96 myFrame.showCurrent(); 97 myFrame.showCurrentPlayer(); 98 MyFrame.timer = new Timer(); 99 100 101 while (!isPositionToGoToAcquired) { 102 103 if (MyFrame.timer.listen()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有