黑白棋的设计

代码如下:

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. 解决64位debian下无法安装ia32库的问题

    原文地址:http://crunchbang.org/forums/viewtopic.php?pid=277918 因为64位debian源中并没有包括32位的软件包,所提安装ia32会提示依赖无法 ...

  2. python 时间与时间戳之间的转换

    https://blog.csdn.net/kl28978113/article/details/79271518 对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运 ...

  3. GITLAB服务基础

    1.GITLAB介绍 一个基于GIT的源码托管解决方案基于Ruby on rails开发集成了nginx postgreSQL redis sidekiq等组件 2. 资源 官网:https://ab ...

  4. IPython的基本功能(转)

    原文:http://kochiya.me/www/posts/Ipython!.html 前几天偶然在公司内网上拖了一本 Learning IPython for Interactive Comput ...

  5. Java-工程中常用的程序片段

    1.字符串-整型相互转换 String s = String.valueOf(2); int a = Integer.parseInt(s); 2.向文件末尾添加内容 BufferedWriter b ...

  6. nanomsg(ZeroMQ with C)

    1.应用手册 https://github.com/nanomsg/nanomsg % mkdir build % cd build % cmake .. % cmake --build . % ct ...

  7. 消息编解码Nanopb - protocol buffers

    Google Protocol Buffer 有各种版本的代码包,Python C/C++.JAVA.C.OBJ-C..NET等,嵌入式设备中使用的protobuf版本,我们选择的是nanoprobu ...

  8. ambari rest api (三)

    1.获取指定主机指定组件的信息列表 http://ip:8080/api/v1/clusters/hdp_dev/hosts/hadoop003.edcs.org/host_components/DA ...

  9. win10专业版密钥激活

    win10专业版密钥激活 1.查看激活状态,win按键>设置(左下角倒数第二个)>更新和安全>激活---------提示没有有效密钥,需要激活 2.管理员身份打开cmd,搜索框输入c ...

  10. UVA+POJ中大数实现的题目,持续更新(JAVA实现)

    UVA10494:If We Were a Child Again 大数除法加取余 import java.util.Arrays; import java.util.Scanner; import ...