黑白棋的设计

代码如下:

import java.util.*;
public class Chess{
char[][] chess = new char[16][16];
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
Chess ch = new Chess();
ch.init();
ch.output();
int tag = 0;
int nn = 0;
while(nn < 225){
System.out.println("please enter your place to put the chess");
int x = in.nextInt();
int y = in.nextInt();
if(ch.set(x,y,nn) == false)
continue;
if(ch.judgeColumn(x,y)==true){
System.out.println(ch.chess[x][y] + "win");
tag = 1;
break;
}else if(ch.judgeRow(x,y)==true){
System.out.println(ch.chess[x][y] + "win");
tag = 1;
break;
}else if(ch.judgeLUtoRD(x,y)==true){
System.out.println(ch.chess[x][y] + "win");
tag = 1;
break;
}else if(ch.judgeRUtoLD(x,y)==true){
System.out.println(ch.chess[x][y] + "win");
tag = 1;
break;
}
else
nn++;
}
if(tag == 0)
System.out.println("平局");
in.close(); }
boolean set(int ii, int jj,int nn){
if(ii <1 || jj > 15 || ii > 15 || jj <1)
return false;
else{
if(chess[ii][jj] == '+'){
if(nn%2 == 1){
chess[ii][jj] = '●';
}else{
chess[ii][jj] = '○';
}
output();
return true;
}else{
System.out.println("you can't put your chess on this place");
return false;
}
}
}
void init(){
System.out.println("this is a 15*15 chess ");
for(int i = 1; i <= 15; i++){
for(int j = 1 ; j <= 15; j++){
chess[i][j] = '+';
}
}
}
void output(){
for(int i = 1 ; i <= 15; i++){
for(int j = 1 ; j <= 15; j++){
System.out.print(chess[i][j] + " ");
}
System.out.println();
}
System.out.println();
}
//judge column
boolean judgeColumn(int ii,int jj){
int i = 1;
int j = 1;
while(ii-i >= 1 && chess[ii-i][jj] == chess[ii][jj]){
i += 1;
}
while(ii+j <= 15 && chess[ii+j][jj] == chess[ii][jj]){
j += 1;
}
if(i+j-1>=5)
return true;
else
return false;
}
//judge row
boolean judgeRow(int pi, int pj){
int i = 1;
int j = 1;
while(pj-i>=1&&chess[pi][pj-i]==chess[pi][pj])
i+=1;
while(pj+j<=15&&chess[pi][pj+j]==chess[pi][pj])
j+=1;
if(i+j-1 >= 5)
return true;
else
return false;
}
//judge from left up to right down
boolean judgeLUtoRD(int pi, int pj){
int i = 1;
int j = 1;
while(pi+i<=15 && pj-i>=0 && chess[pi+i][pj-i] == chess[pi][pj])
i+=1;
while(pi-j>=0 && pj+j <= 15 && chess[pi-j][pj+j] == chess[pi][pj])
j++;
if(i+j-1>=5)
return true;
else
return false;
}
//jduge from right up to left down
boolean judgeRUtoLD(int pi,int pj){
int i = 1;
int j = 1;
while(pi+i <= 15 && pj+i <= 15 && chess[pi+i][pj+i] == chess[pi][pj])
i+=1;
while(pi-j >= 0 && pj-j >= 0 && chess[pi-j][pj-j] == chess[pi][pj])
j+=1;
if(i+j-1>=5)
return true;
else
return false;
}
}

从0开始 Java实习 黑白棋的更多相关文章

  1. C++ 黑白棋AI minimax+alphabeta剪枝

    没事写着玩玩,通过debian上的黑白棋测试,搜了10层,打hard应该问题不大 #include <cstdio> #include <cstring> using name ...

  2. 用Dart写的黑白棋游戏

    2013年11月,Dart语言1.0稳定版SDK发布,普天同庆.从此,网页编程不再纠结了. 在我看来,Dart语法简直就是C#的升级版,太像了.之所以喜欢Ruby的一个重要理由是支持mixin功能,而 ...

  3. bzoj 2281 [Sdoi2011]黑白棋(博弈+组合计数)

    黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色 ...

  4. 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋

    Description 黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是 ...

  5. 最近找java实习面试被问到的东西总结(Java方向)

    时间,就是这么很悄悄的溜走了将近两个年华,不知不觉的,研二了,作为一个一般学校的研究生,不知道该说自己是不学无术,还是说有过努力,反正,这两年里,有过坚持,有过堕落,这不,突然间,有种开窍的急迫感,寻 ...

  6. [SDOI2011]黑白棋

    Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...

  7. 广州三本找Java实习经历

    前言 只有光头才能变强 这阵子跑去面试Java实习生啦~~~我来简单介绍一下背景吧. 广州三本大三在读,在广州找实习.大学开始接触编程,一个非常平庸的人. 在学习编程时,跟我类似的人应该会有一个疑问: ...

  8. 【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划)

    [BZOJ2281][SDOI2011]黑白棋(博弈论,动态规划) 题面 BZOJ 洛谷 题解 先看懂这题目在干什么. 首先BZOJ上面的题面没有图,换到洛谷看题就有图了. 不难发现都相邻的两个异色棋 ...

  9. 【BZOJ2281】【Sdoi2011】黑白棋 解题报告

    [BZOJ2281][Sdoi2011]黑白棋 Description ​ 小A和小B又想到了一个新的游戏. ​ 这个游戏是在一个\(1\)*\(n\)的棋盘上进行的,棋盘上有\(k\)个棋子,一半是 ...

随机推荐

  1. hotspot的简单介绍

    慢慢开始深入了解java,才知道java虚拟机有很多种,其中最为知名的应该就是hotspot了,接下来是hotspot的一点简单介绍. 没错,Java是解释语言,但并不意味着它一定被解释执行.早期 的 ...

  2. Django源码安装方法及创建启动项目

    一.源码安装方法 下载源码包:https://www.djangoproject.com/download/ 输入以下命令并安装: tar xzvf Django-X.Y.tar.gz # 解压下载包 ...

  3. python爬虫系列(2)—— requests和BeautifulSoup

    本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法. 1. 安装requests和BeautifulSoup库 可以通过3种方式安装: easy_inst ...

  4. NGS中的一些软件功能介绍

    1.bowtie 短序列比对工具,blast也是短序列比对工具,速度快,结果易理解. 输入可以是fastq或者fasta文件. 生成比对结果文件sam格式的吧. 2.bwa 转自:https://ww ...

  5. PHP程序执行时间过长,超时了怎么办

    解决办法:修改php.ini文件,把最大的执行时间改为0,0表示不限制时间. max_execution_time = 0

  6. python16_day25【crm】

    一.CRM模拟admin功能 1.过滤功能 2.显示数据分页 3.动态菜单 项目:https://github.com/willianflasky/growup/tree/master/s16/hom ...

  7. flask扩展 -- flask-script

    Flask-Scropt插件:为在Flask里编写额外的脚本提供了支持.这包括运行一个开发服务器,一个定制的Python命令行,用于执行初始化数据库.定时任务和其他属于web应用之外的命令行任务的脚本 ...

  8. Log4net 自定义字段 写入Oracle 使用ODP.NET Managed驱动

    一.环境说明: 开发工具:vs2010   ,数据库:oracle 11g ,版本:log4net的目前最新版本1.2.13.0    :  Oracle.ManagedDataAccess.dll ...

  9. hbase(一)

    1.hbase安装参考 http://blog.csdn.net/wild46cat/article/details/53214159 2.遇到的问题: ERROR: The node /hbase ...

  10. IOS开发-数据库总结

    关于数据存储概念: 数据结构: 基本对象:NSDictionary.NSArray和NSSet这些对象. 复杂对象:关系模型.对象图和属性列表多种结构等. 存储方式: 内存:内存存储是临时的,运行时有 ...