刚开始学习编程不久,好不容易做出一个小东西。希望各位高手给出改进建议,以助我们新手学习。先谢谢了!!
package ambow.hpu.shixun;
import java.util.Scanner;
public class WuZiQi {
/**
* 演示简单五子棋功能。
*/
private boolean iswrite=false;
private int[][]qp=new int[9][9];
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
WuZiQi w =new WuZiQi();
System.out.println("------欢迎体验五子棋------");
System.out.println("1.新游戏");
System.out.println("2.帮助");
System.out.println("3.设置");
System.out.println("4.关于");
System.out.println("5.退出游戏");
while(true){
int a =input.nextInt();
switch(a){
case 1:
w.newGame();
break;
case 2:
w.help();
break;
case 3:
w.set();
break;
case 4:
w.about();
break;
case 5:
System.exit(0);
break;
default:
break;
}
}
}
public void about(){
System.out.println("作者:菜鸟队;");
System.out.println("指导:指导老师");
}
public void set(){
System.out.println("1.背景声音设置");
System.out.println("2.游戏模式设置");
System.out.println("3.背景图片设置");
}
public void help(){
System.out.println("输入你要落子位置的坐标,即可下子。");
}
public void qiPan(){
for(int i=0;i<qp.length;i++){
for(int j=0;j<qp[i].length;j++){
qp[i][j]=0;
}
}
}
public void setQiPan(){
System.out.print(" ");
for(int i=0;i<qp.length;i++){
System.out.print(i+1+" ");
}
System.out.println();
for(int i=0;i<qp.length;i++){
System.out.print(i+1+" ");
for(int j=0;j<qp[i].length;j++){
if(qp[i][j]==0){
System.out.print("-");
}
if(qp[i][j]==1){
System.out.print("*");
}
if(qp[i][j]==-1){
System.out.print("@");
}
System.out.print(" ");
}
System.out.println();
}
}
public void newGame(){
Scanner input = new Scanner(System.in);
while(true){
setQiPan();
if(iswrite){
System.out.println("请执白子者下:");
}else{
System.out.println("请执黑子者下:");
}
int x = input.nextInt();
int y = input.nextInt();
if(iswrite&&qp[x-1][y-1]==0){
qp[x-1][y-1]=1;
}else if(qp[x-1][y-1]!=0){
continue;
}else {
qp[x-1][y-1]=-1;
}
if(iswin(x-1,y-1)){
if(iswrite){
System.out.println("白棋胜!");
}else{
System.out.println("黑棋胜!");
}
break;
}
iswrite=!iswrite;
}
}
public boolean islegal(int x,int y){
if(x<0||y<0||x>=9||y>=9){
return false;
}else{
return true;
}
}
public boolean iswin(int x,int y) {
int key=0;
if(iswrite){
key=1;
}else{
key=-1;
}
//1.5方向判断。
int count =key;
for(int i=0;i<5;i++){
if( islegal(x-i,y-i)&&qp[x-i][y-i]==key){
count += qp[x-i][y-i];
}else {
break;
}
}
for(int i=0;i<5;i++){
if(islegal(x,y)&&qp[x+i][y+i]==key){
count = count+qp[x+i][y+i];
}else {
break;
}
}
if(Math.abs(count)==7){
return true;
}
//2.6方向判断
count=key;
for(int i=0;i<5;i++){
if(islegal(x-i,y)&&qp[x-i][y]==key){
count = count+qp[x-i][y];
}else {
break;
}
}
for(int i=0;i<5;i++){
if(islegal(x,y)&&qp[x+i][y]==key){
count+=qp[x+i][y];
}else {
break;
}
}
if(Math.abs(count)==7){
return true;
}
//3.7方向判断
count=key;
for(int i=0;i<5;i++){
if(islegal(x-i,y)&&qp[x-i][y+i]==key){
count+=qp[x-i][y+i];
}else {
break;
}
}
for(int i=0;i<5;i++){
if(islegal(x,y-i)&&qp[x+i][y-i]==key){
count+=qp[x+i][y-i];
}else {
break;
}
}
if(Math.abs(count)==7){
return true;
}
//4.8方向判断。
count=key;
for(int i=0;i<5;i++){
if(islegal(x,y)&&qp[x][y+i]==key){
count+=qp[x][y+i];
}else {
break;
}
}
for(int i=0;i<5;i++){
if(islegal(x,y-i)&&qp[x][y-i]==key){
count+=qp[x][y-i];
}else {
break;
}
}
if(Math.abs(count)==7){
return true;
}
return false;
}
}