zoukankan      html  css  js  c++  java
  • java——棋牌类游戏五子棋(singlewzq1.0)之一

    这是本人最近一段时间写的五子棋的java代码,大体框架都实现了,一些细节还需要优化。

    package basegame;
    
    
    
    import java.awt.Color;
    import java.awt.Point;
    
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    
    
    
    /***************************************************************************
     * TODO
     * <br>Created on 2013-6-28 下午7:45:13<br>
     * @author daicy
     ***************************************************************************/
    public class GameFrame extends JFrame  {
    
    
    	private Player[] players = new Player[2];
    	
    	private GameThread gameThread;
    	
    	private ChessBoard chessBoard;
    	
    	
    	public int lordIndex = -1;
    	
    	public int turnIndex = -1;
    
    	public int id;
    	
    	
    	
    	public GameFrame(String name){
    		
    		initMain();// 初始化
    		
    		
    		//this.setlord(1);
    		reStart();
    		
    	    setVisible(true);
    		
    		//new Thread(new PaintThread()).start();
    	    
    	}
    	
    	// 初始化窗体
    	private void initMain() {
    		{
    			setBackground(new Color(0, 112, 26)); // 背景为绿色
    			setTitle("五子棋");
    			setSize(536,546);
    			setResizable(false);
    			setLocationRelativeTo(getOwner()); // 屏幕居中
    			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		}
    
    	}
    	
    	
    
    	
    	// 初始化窗体
    	public void reStart() {
    		
    		if(null!=chessBoard){
    			this.remove(chessBoard);
    		}
    		
    		chessBoard = new ChessBoard(this);
    		
    		add(chessBoard);
    			
    		players[0] = new Player(0+"",0);
    		players[0].userState = 0;
    		players[0].setChessNum(1);
    		
    		players[1] = new Player(1+"",1);
    		players[1].userState = 0;
    		players[1].setChessNum(2);
    		
    		
    		gameThread = new GameThread(this);
    		
    		gameThread.start();
    		
    		gameThread.gameState = 2;
    		
    		turnIndex = 1;
    				
    	}	
    		
    
    	public static void main(String args[]) {
    		GameFrame GamePanel = new GameFrame("daicy");
    	
    	}
    
    	public Player[] getPlayers() {
    		return players;
    	}
    
    	public void setPlayers(Player[] players) {
    		this.players = players;
    	}
    
    	public ChessBoard getChessBoard() {
    		return chessBoard;
    	}
    
    	public void setChessBoard(ChessBoard chessBoard) {
    		this.chessBoard = chessBoard;
    	}
    
    	public void sendXY(int id,Point point){
    		getPlayers()[id].setCurrentChesse(point);
    		getChessBoard().chesses[point.x][point.y] = getPlayers()[id].getChessNum();
    		getChessBoard().repaint();
    		
    		if (new FiveChessAI(getChessBoard().chesses,2,1).
    				showWin(point.x, point.y, getPlayers()[id].getChessNum())) {
    			setWinById(getPlayers()[id].getChessNum());
    		}
    		
    		turnIndex = (id+1)%2;
    	}
    	
    	public void setWinById(int id){
    		gameThread.gameState = -1;
    		chessBoard.removeMouseListener(chessBoard);
    		chessBoard.removeMouseListener(chessBoard);
    		String s = "恭喜电脑" + id + ",赢了! 你的智商有待提高哦";
    		JOptionPane.showMessageDialog(this, s);
    		this.reStart();
    
    	}
    	
    }
    
    package basegame;
    import java.awt.Point;
    
    
    
    
    public class GameThread extends Thread {
    	private GameFrame mainPanel ;
    	
    	public int gameState;  //0准备 1 抢地主2出牌; -1 结束
    	
    
    
    	public GameThread(GameFrame mainPanel) {
    		this.mainPanel = mainPanel;
    	}
    
    
    	@Override
    	public void run() {
            while (true) {
            	if(gameState==-1){
            		break;
            	}
    			switch (gameState) {
    				case 0:
    					
    				    break;
    				case 1:
    					
    					break;
    				case 2:
    					if(mainPanel.turnIndex==0){
    						
    					}else if(mainPanel.turnIndex>0){
    //						Integer x = (int) (Math.random() * 14);
    //						Integer y = (int) (Math.random() * 14);
    						int num = new FiveChessAI(mainPanel.getChessBoard().chesses,2,1).makeResultPoint();
    						Point point = new Point();
    						point.x = (num / 15);
    						point.y = (num % 15);
    						mainPanel.sendXY(mainPanel.turnIndex,point);
    					}
    					break;
    			}
    		}
    	}
    	
    	
    }
    

    package basegame;
    
    
    import java.awt.Point;
    
    public class Player {
    	
    	
        public Point currentChesse ;        //用于记录自己刚走过的棋子 
    	
    	private String name ;
    	
    	private Integer id ;
    	
    	private Integer chessNum ;
    	
    	public int userState = -1; // 0 准备  1 抢地主  2 出牌;
    	
    	
    	public Player(String name, Integer id) {
    		super();
    		this.name = name;
    		this.id = id;
    	}
    
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Integer getId() {
    		return id;
    	}
    
    	public void setId(Integer id) {
    		this.id = id;
    	}
    
    
    	public Point getCurrentChesse() {
    		return currentChesse;
    	}
    
    
    	public void setCurrentChesse(Point currentChesse) {
    		this.currentChesse = currentChesse;
    	}
    
    
    	public Integer getChessNum() {
    		return chessNum;
    	}
    
    
    	public void setChessNum(Integer chessNum) {
    		this.chessNum = chessNum;
    	}
    	
        
    }
    



  • 相关阅读:
    Groups And SiteGroups
    【objc】objectivec学习(1)
    【正则】正则表达式和自动机
    【android】ListView的item事件和item里面的view的事件同时存在
    【计划】rss,搜索
    【objc】Foundation Kit
    【设计】【爬虫】针对某一主题做的爬虫,使用Jsoup解析
    【java】【实践】阅读代码,一些较好的实践
    【java】【HtmlParser】HtmlParser使用
    【learn】learn1
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959564.html
Copyright © 2011-2022 走看看