• 使用数组实现人机下五子棋的效果(还没有写判断输赢的方法)


    package com.wh.Arrays;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    /**
     * @author 王恒
     * @datetime 2017年4月27日 下午11:37:57
     * @description
     * 
     */
    public class TestPlayChart {
    	private static TestPlayChart p;
    	private static Scanner sc=new Scanner(System.in);
    	private static int boardSize = 10;
    	private String[][] board;
    	private String x="●";
    	private String y="○";
    
    	private TestPlayChart(){
    
    	}
    	
    	public static TestPlayChart getInstance(){
    		if(p==null){
    			p=new TestPlayChart(); 
    		}
    		return p;
    	}
    	// 初始化棋盘
    	public void initBoard() {
    		board = new String[boardSize][boardSize];
    		for (int i = 0; i < board.length; i++) {
    //			Arrays.fill(board[i], "十");
    			Arrays.fill(board[i], "+");
    		}
    	}
    
    	// 打印输出棋盘
    	public void printBoard() {
    		for (int i = 0; i < board.length; i++) {
    			for (int j = 0; j < board[i].length; j++) {
    				System.out.print(board[i][j]);
    			}
    			System.out.println();
    		}
    	}
    	
    	//人下棋
    	public void personPlays(){
    		System.out.println("请输入你下棋的坐标(x,y):");
    		String person=sc.next();
    		String[] ps=person.split(",");
    		int pX=Integer.parseInt(ps[0]);
    		int pY=Integer.parseInt(ps[1]);
    		if(isPlays(pX,pY)){
    			System.out.println("你输入的棋子坐标有误,请重新输入!");
    			personPlays();
    		}
    		//p.board[pX][pY]=p.x;
    		p.board[pX][pY]="●";
    	}
    	
    	//机器下棋
    	public void machinePlays(){
    		System.out.println("机器人下棋的坐标为(x,y):");
    		int mX=(int)(Math.random()*boardSize); 
    		int mY=(int)(Math.random()*boardSize);
    		if(isPlays(mX,mY)){
    			machinePlays();
    		}
    		//p.board[mX][mY]=p.y;
    		p.board[mX][mY]="○";
    		System.out.println(mX+","+mY);
    	}
    	
    	//判断某一位置上是否有棋子
    	public boolean isPlays(int x,int y){
    		//if(!"十".equals(board[x][y])){
    		if(!"+".equals(board[x][y])){
    			return true;
    		}
    		return false;
    	}
    
    	/**
    	 * 还差一个判断输赢的方式,即横、竖、左斜、右斜是否有五个在一起的棋子
    	 * 
    	 */
    	
    	
    	
    	//问题1:为什么将变量名赋值给常量,再将这个常量赋值比int小的基本数据类型,会报错???   int i=10,final int i2=i;byte b=i2;
    	public static void main(String[] args) {
    		TestPlayChart p2 =TestPlayChart.getInstance();
    		p2.initBoard();
    		while(true){
    			p2.personPlays();
    			p2.machinePlays();
    			p2.printBoard();
    		}
    	}
    
    }
    

      

  • 相关阅读:
    VMware + CentOS 7搭建环境(二)
    VMware + CentOS 7搭建环境(一)
    电脑清理的问题整理
    windows下搭建vue+webpack的开发环境
    git使用指南
    如何使用前端技术设置地理围栏?
    js点击按钮button效果(波效果)
    计算两个日期时间之间的时间差:28小时38分钟
    jQuery实现的全选、反选和获取当前所有选中的值功能
    vue恼人的node_modules目录删除方法
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/6778664.html
Copyright © 2020-2023  润新知