黑白棋的设计

代码如下:

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. 【pentaho】【kettle】【Data Integration】试用

    要做数据分析,领导让研究一下kettle. 先占个坑. 这里有个3.0的文档: http://wenku.baidu.com/link?url=hvw_cOBIXLXSGvftkGhXQic3CLC7 ...

  2. Purpose of ContextLoaderListener in Spring

    The ApplicationContext is where your Spring beans live. The purpose of the ContextLoaderListener is ...

  3. uchome android 开发记录

    一.uchome 1.无法转移临时图片到服务器指定目录 cp_upload.php----------- function.cp.php ---------mobile_picture_tempora ...

  4. 图解Python可以做些什么

    Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无 ...

  5. gui设计

    芯艺,你好! ... ... ... 芯艺,再见! http://www.chipart.cn/ 附件 http://files.cnblogs.com/files/dong1/%E8%89%BA%E ...

  6. Spring整合jdbc编程

    一.Spring对Jdbc的支持    Spring为了提供对Jdbc的支持,在Jdbc API的基础上封装了一套实现,以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, ...

  7. 奇异值与主成分分析(PCA)

    主成分分析在上一节里面也讲了一些,这里主要谈谈如何用SVD去解PCA的问题.PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差.方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性 ...

  8. boost implicit_cast

    在stackoverflow上看到这个帖子, 于是发现了boost::implicit_cast这个小东西. 先来看看这段代码: struct top {}; struct mid_a : top { ...

  9. idea操作数据库

    1.View-->>Tool Windows-->>Database. 2.点击“+”号-->>选择Data Source-->>选择需要连接的数据库类 ...

  10. PKU 3318 Matrix Multiplication(随机化算法||状态压缩)

    题目大意:原题链接 给定三个n*n的矩阵A,B,C,验证A*B=C是否成立. 所有解法中因为只测试一组数据,因此没有使用memset清零 Hint中给的傻乎乎的TLE版本: #include<c ...