玩家:2人,一位玩家在水平方向上玩游戏,另一位玩家在垂直方向上玩游戏。
目标:成为最后一个能够合法移动多米诺骨牌的人
棋盘:棋盘是8×8四方格棋盘,就像国际象棋或者西洋跳棋一样。它最初是空的。
玩法:在一局中,玩家把一张多米诺骨牌放在棋盘上,占据相邻的两个方格。一位玩家水平地(由东向西—)放置他的多米诺骨牌,另一外玩家垂直地(由北向南)放置他的多米诺骨牌。忽略多米诺骨牌上的点,但是一张多米诺骨牌不能与以前玩的任何多米诺骨牌重叠。

Board Class

import org.omg.CORBA.PUBLIC_MEMBER;/*** Created by root on 16-2-23.*/
public class Board {public static final boolean HORIZONTAL = false;public static final boolean VERTICAL = true;int rowOffset;int columnOffset;private boolean[][] squares;//棋盘public Board() {squares = new boolean[8][8];//构造方法的同时初始化}public String toString() {//打印棋盘String result = " 1 2 3 4 5 6 7 8";//列标索引for (int row = 0; row < 8; row++) {result += "\n" + (row+1);//行标索引for (int column = 0; column < 8; column++) {if (!squares[row][column]) {//true输出点result += ". ";} else {//false 输出  #result += "# ";}}}return result;}public boolean hasLegalMoveFor(boolean player) {//HORIZONTAL=FALSE;palyer是否可以继续放牌?if (player == HORIZONTAL) {rowOffset = 0;columnOffset = 1;//水平放2张牌} else {rowOffset = 1;columnOffset = 0;//垂直放2张牌}for (int row = 0; row < 8 - rowOffset; row++) {for (int column = 0; column < 8 - columnOffset; column++) {if ((squares[row][column] == false) && (squares[row + rowOffset][column + columnOffset] == false)) {return true;//存在合法的位置}}}return false;//不存在合法位置}public boolean playAt(int row, int column, boolean player) {//返回能否在指定位置放牌 可以返回true并放牌if (player) {//Vertical                                  //否则返回false并不执行操作if ((squares[row][column] == false) &&(squares[row + 1][column] == false)) {squares[row][column] = true;squares[row + 1][column] = true;return true;} else {return false;}}else {if ((squares[row][column] == false) && (squares[row][column + 1] == false)) {squares[row][column] = true;squares[row][column + 1] = true;return true;} else {return false;}}}
}

Main Class

/*** Created by root on 16-2-23.*/
import java.util.Scanner;
public class Main {static final boolean HORIZONTAL=false;static final boolean VERTICAL=true;public static final java.util.Scanner INPUT=new java.util.Scanner(System.in);//获取用户输入Board board;public static void main(String[]args){Main main=new Main();//静态方法使用本类方法先构造main.play();}public void play(){//主要逻辑部分System.out.println("Welcome to play Domineer");boolean player=HORIZONTAL;while(true){if(board.hasLegalMoveFor(player)==false){if(player==HORIZONTAL){System.out.print("游戏结束 玩家HORIZONTAL输了");break;}else {System.out.print("游戏结束 玩家HORIZONTAL输了");break;//有一方不能合法放牌则终止循环}}System.out.print(board.toString());if(player==HORIZONTAL){System.out.println("\n player:"+"HORIZONTAL");}else System.out.println("\n player: "+"VERTICAL");System.out.println("输入行索引");int row= INPUT.nextInt();System.out.print("输入列索引");int column=INPUT.nextInt();if(board.playAt(row-1,column-1,player));else {System.out.println("输入有误 !\n  请重新输入\n ");continue;}player=!player;//交换玩家}}public Main(){board=new Board();//在静态方法中调用}
}

转载于:https://www.cnblogs.com/Salaku/p/5208014.html

Java小项目-Domineering demo相关推荐

  1. Java小项目中WEB-INF下jsp页面如何访问?

    Java小项目中WEB-INF下jsp页面如何访问? - 今天又是充满希望的一天 - CSDN博客 关闭 今天又是充满希望的一天 目录视图 摘要视图 订阅 var username = "H ...

  2. java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材源码

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

  3. java小项目家庭记账程序

    文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...

  4. java小项目影院系统

    java小项目,影院管理系统 http://download.csdn.net/detail/github_32658299/9632276 下面是两个关键的类 1.这是电影院测试类,用来读取用户输入 ...

  5. 我是一只小僵尸java,Java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材...

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

  6. java小项目租车系统_Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的"呱呱租车系统" 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金 ...

  7. Java小项目——家庭记账项目

    学习Java已经过了半个月左右了,所学的知识已经能够写一些小程序或者小项目,虽然它可能没有那么高级,但是也能检验你之前所学的全部内容.所以今天就与大家分享一下我的小项目经验. 一.需求说明 该软件能够 ...

  8. Java小项目-银行用户管理系统

    文章目录 前言 一. 功能 二. 代码 银行卡数据 转账流水数据 用户数据 BanksController UserController BanksDao RecordDao UserDao Bank ...

  9. 学生成绩查询系统(Java实现),你第一个Java小项目

    一.学生成绩查询系统(Java实现) 项目要求(我们可以做的更面向对象一点,灵活处理): 具体思路如下: 1.引入程序需要调用的包 2.创建总程序包 "stuScoreInquirySyst ...

最新文章

  1. ajax hapi上传文件,javascript – hapi.js Cors Pre-flight不返回Access-Control-Allow-Origin标头...
  2. JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
  3. 踩坑rosbag --clock
  4. 一方包,二方包,三方包的区别
  5. Linux kernel 本地拒绝服务漏洞
  6. 递归算法的时间复杂度分析
  7. python中grid函数_Python / NumPy中meshgrid的目的是什么?
  8. perl lwp 超时问题
  9. 范华专栏 | 挪威主权基金2018年报解读
  10. Raki的PRML阅读笔记 第1章:Introduction
  11. eclipse中项目已经启动,可是tomcat一直显示在启动中
  12. PHP yield简介
  13. ROS树莓派小车暑假记录(二)
  14. 宋体(Simsun)和新宋体(NSimsun)的区别
  15. ElasticSearch 多字段分组求和
  16. 射频电路PCB的设计技巧
  17. 微信公众平台测试账号申请地址
  18. 用高德地图罗永浩语音包 随时听老罗讲段子
  19. 【互联网营销基础知识】新媒体工具亲民替代款有什么?
  20. 如何利用树莓派制作路由器

热门文章

  1. 关于畅卓/聚合 短信发送
  2. PHP之星际设计模式上(转自lightsaber)
  3. 助你考研脱单!适合做情侣的cp专业!
  4. xshell产品运行所需的信息检索失败_苹果最薄的电脑停产了,但它并不失败
  5. UG二次开发 拔模功能实现
  6. 男生和女生(python)
  7. 从 JavaScript 明星项目看前端发展
  8. 苹果手机还原网络设置会怎样_苹果手机信号永不满格?那是因为这些设置没发现,现在知道还不晚...
  9. Google Earth Engine(GEE)——导出的影像资产会改变原有的分辨率大小
  10. chrome调试h5移动端(含android,ios)