`
king_tt
  • 浏览: 2123670 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java制作的五子棋小例子

 
阅读更多

1.本实例基于java控制台输出

2.本实例未包含胜负判断算法,待完善

3.本实例用于数组、类和对象、输入输出、流程控制等知识点的教学用

PlayGo.java

package cn.edu.lecheng;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PlayGo {
	
	private static final int BOARD_SIZE = 10;

	/**
	 * @param args
	 * 创建者:TOM
	 * 创建日期:2013-7-16
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		String inputStr = "";
		int stepCount = 1;
		//初始化棋盘
		Board board = new Board(BOARD_SIZE);
		Position position = new Position(BOARD_SIZE);
		//board[3][6]="◎";
		//board[2][6]="◆";
		//输出初始化的棋盘
		System.out.println("游戏开始,初始化棋盘:");
		board.printBoard();
		System.out.println("玩家1所用棋子:◎;玩家2所用棋子:◆。");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try{
			System.out.print("第1步——请输入棋子的行列坐标,用逗号隔开:");
			while((inputStr=br.readLine())!=null){
				if(position.checkPositionFormat(inputStr)){ //判断输入的坐标格式是否正确
					if(board.checkBoard(inputStr)){
						board.play(inputStr, stepCount);
						board.printBoard();
						stepCount++;
					}else{
						System.out.println("该位置已经有子,请重新下。");
						continue;
					}
					
				}else{
					System.out.println("输入的坐标不正确!请重新输入:");
					continue;
				}
				System.out.print("第"+stepCount+"步——请输入棋子的行列坐标,用逗号隔开:");
				
			}
		}catch(IOException ioe){
			System.out.println(ioe.getMessage());
		}
		
	}

}
Board.java

package cn.edu.lecheng;

public class Board {

	private String[][] board;
	private int boardSize = 0;

	// 构造方法
	public Board(int size) {
		// TODO Auto-generated constructor stub
		boardSize = size;
		board = new String[size][size];
		for (int i = 0; i < size; i++) {
			for (int j = 0; j < size; j++) {
				if (i == 0 && j == 0) {
					board[i][j] = " ";// 左上角
				} else if (i == 0 && j != 0) {
					board[i][j] = (new Integer(j)).toString() + " ";// 列号.空格为对齐表格
				} else if (i != 0 && j == 0) {
					board[i][j] = (new Integer(i)).toString();// 行号
				} else {
					board[i][j] = "╋";
				}
			}
		}
	}
	/**
	 * 输出棋盘
	 * 
	 * 创建者:TOM
	 * 创建日期:2013-7-17
	 */
	public void printBoard() {
		for (int i = 0; i < boardSize; i++) {
			for (int j = 0; j < boardSize; j++) {
				System.out.print(board[i][j]);
			}
			System.out.println("");
		}
	}
	/**
	 * 下子
	 * @param pos
	 * @param step
	 * 创建者:TOM
	 * 创建日期:2013-7-17
	 */
	public void play(String pos, int step){
		String[] tempStr = pos.split(",");
		int row = Integer.parseInt(tempStr[0]);
		int col = Integer.parseInt(tempStr[1]);
		if(step % 2 !=0){
			board[row][col]="◎";
		}else{
			board[row][col]="◆";
		}
	}
	/**
	 * 检测该位置是否已有子
	 * @param pos
	 * @return 无子返回true,有子返回false
	 * 创建者:TOM
	 * 创建日期:2013-7-17
	 */
	public boolean checkBoard(String pos){
		boolean flag = false;
		String[] tempStr = pos.split(",");
		int row = Integer.parseInt(tempStr[0]);
		int col = Integer.parseInt(tempStr[1]);
		if(board[row][col].equals("╋")){
			flag = true;
		}
		return flag;
	}

}
Position.java

package cn.edu.lecheng;

public class Position {

	private int bSize = 0;
	public Position(int size){
		bSize = size;
	}
	/**
	 * 检查坐标输入格式
	 * @param pos
	 * @return
	 * 创建者:TOM
	 * 创建日期:2013-7-18
	 */
	public boolean checkPositionFormat(String pos){
		boolean flag=false;
		String[] tempStr = pos.split(",");
		try{
			if(Integer.parseInt(tempStr[0]) > bSize-1 || Integer.parseInt(tempStr[0]) <=0 ){
				return false;
			}
			if(Integer.parseInt(tempStr[1]) > bSize-1 || Integer.parseInt(tempStr[1]) <=0 ){
				return false;
			}
			flag = true;
		}catch(Exception e){
			flag=false;
		}
		return flag;
	}
}

演示效果


分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象...

    JAVA上百实例源码以及开源项目源代码

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象...

    java源码包4

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics...

    java源码包3

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics...

    JAVA上百实例源码以及开源项目

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象...

    java源码包2

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...

    java源码包JSP实例源码JAVA开发源码65个合集.zip

    单机版java五子棋V1.1.rar 在Servlet中连接数据库的Java代码.rar 备份数据源.rar 学生成绩系统(图形界面).rar 学生课程管理系统.rar 宾馆管理系统.rar 手机游戏J2ME毕业设计.rar 打地鼠游戏.rar 数据持久层框架 ...

    asp.net知识库

    制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui...

Global site tag (gtag.js) - Google Analytics