从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\)个棋子,一半是 ...
随机推荐
- Blue Jeans---poj3080(kmp+暴力求子串)
题目链接:http://poj.org/problem?id=3080 题意就是求n个长度为60的串中求最长公共子序列(长度>=3):如果有多个输出字典序最小的: 我们可以暴力求出第一个串的所有 ...
- Linux Anaconda安装步骤
首选下载wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh 可以去官网查看适合自己的文件https://www ...
- K-medodis聚类算法MATLAB
国内博客,上介绍实现的K-medodis方法为: 与K-means算法类似.只是距离选择与聚类中心选择不同. 距离为曼哈顿距离 聚类中心选择为:依次把一个聚类中的每一个点当作当前类的聚类中心,求出代价 ...
- Incorrect key file for table ' '; try to repair it
场景:为有150W的数据表增加字段时,报错 解决:在my.ini配置临时目录configure tmpdir. Where MySQL Stores Temporary Files
- foo ?
我们经常看到一些基础教程,面试题中经经常使用foo来命名,甚至有时候我们也会用过,可是你是否又知道foo是什么意思?(实际上,知道不知道又不会对你编码有不论什么影响~) 从编程黑马的王轶男的话来解释, ...
- 【开发者笔记】插入排序过程呈现之java内置GUI表示
先给代码,再给过程视频: package com.dyi.wyb.sort; import java.awt.Color; import java.awt.Graphics; import java. ...
- 模块讲解----random模块(随机取值)
导入random模块 import random #查看random的帮助: # help(random) #随机浮点数: #用于生成一个0到1的0 >= n < 1.0的范围值 prin ...
- 关于websocket通讯
var ws = { init:function(callback){ var _this = this; _this.callback = callback; }, websocket:functi ...
- koa2简单demo
// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示: const Koa = require('koa'); const Router = req ...
- vector 迭代 删除指定的元素
std::vector< Bullet * > m_vBullets; std::vector< Bullet * > m_vRemoveBulltes; ){ for ( s ...