从0开始 Java实习 黑白棋
黑白棋的设计
代码如下:
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实习 黑白棋的更多相关文章
- C++ 黑白棋AI minimax+alphabeta剪枝
没事写着玩玩,通过debian上的黑白棋测试,搜了10层,打hard应该问题不大 #include <cstdio> #include <cstring> using name ...
- 用Dart写的黑白棋游戏
2013年11月,Dart语言1.0稳定版SDK发布,普天同庆.从此,网页编程不再纠结了. 在我看来,Dart语法简直就是C#的升级版,太像了.之所以喜欢Ruby的一个重要理由是支持mixin功能,而 ...
- bzoj 2281 [Sdoi2011]黑白棋(博弈+组合计数)
黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色 ...
- 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
Description 黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是 ...
- 最近找java实习面试被问到的东西总结(Java方向)
时间,就是这么很悄悄的溜走了将近两个年华,不知不觉的,研二了,作为一个一般学校的研究生,不知道该说自己是不学无术,还是说有过努力,反正,这两年里,有过坚持,有过堕落,这不,突然间,有种开窍的急迫感,寻 ...
- [SDOI2011]黑白棋
Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...
- 广州三本找Java实习经历
前言 只有光头才能变强 这阵子跑去面试Java实习生啦~~~我来简单介绍一下背景吧. 广州三本大三在读,在广州找实习.大学开始接触编程,一个非常平庸的人. 在学习编程时,跟我类似的人应该会有一个疑问: ...
- 【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划)
[BZOJ2281][SDOI2011]黑白棋(博弈论,动态规划) 题面 BZOJ 洛谷 题解 先看懂这题目在干什么. 首先BZOJ上面的题面没有图,换到洛谷看题就有图了. 不难发现都相邻的两个异色棋 ...
- 【BZOJ2281】【Sdoi2011】黑白棋 解题报告
[BZOJ2281][Sdoi2011]黑白棋 Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个\(1\)*\(n\)的棋盘上进行的,棋盘上有\(k\)个棋子,一半是 ...
随机推荐
- Zipline Trading Calendars
Trading Calendars What is a Trading Calendar? 什么是交易日历? A trading calendar represents the timing info ...
- 多进程使用matplotlib.pyplot绘heatmap(多线程不可以)
数据格式如下: 8_15/l_eye/2732.png -20.5773 -5.17769 -3.34583 21.5859 9_13_1/l_eye/1211.png -10.1145 34.992 ...
- SSH三大框架的搭建整合(struts2+spring+hibernate)
本文转载自:https://blog.csdn.net/kyle0349/article/details/51751913
- JVM之参数分配详解
开篇之前,推荐一个关于JVM很不错的博客:http://www.cnblogs.com/redcreen/archive/2011/05/04/2036387.html 一.堆参数设置 -XX:+Pr ...
- APP移动端自动化测试工具选型“兵器谱”一览(主流开源工具)
(下面大多数工具都是开源工具,在github,码云等开源平台都能找到) "测试那点事儿”在看到360旗下的测试团队整理的关于目前APP移动端自动化相关的工具,觉得总结的很到位,对目前大多数中 ...
- 使用JS实现页面倒数计数
<script type="text/javascript"> var number = 5; function showNum(){ if(number==1){ w ...
- Parallel Programming-实现并行操作的流水线(生产者、消费者)
本文介绍如何使用C#实现并行执行的流水线(生产者消费者): 1.流水线示意图 2.实现并行流水线 一.流水线示意图 上图演示了流水线,action1接收input,然后产生结果保存在buffer1中, ...
- python介绍和基础(待补充)
python的介绍 把命令放到一个文件中,文件还能执行,这样的语言叫shell脚本 写一个c语言程序,.c结尾的,gcc运行c语言程序,生成.out文件,然后执行.out文件 c语言是先编写代码,再编 ...
- [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程
Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心弄崩Host的环境. 而nvidia-docker2的好处是NVidia帮你配好了Host和Container之间的CUDA相 ...
- java并发 —— Lock
java并发 -- Lock 关于java并发中的锁知识,少不了 Lock.本文转载自:Java并发编程:Lock. 从Java 5之后,在java.util.concurrent.locks包下提供 ...