import Array._
import scala.io.StdIn
import scala.collection.mutable.Set
import scala.math._
import util.control.Breaks._
import scala.util.control._
object Demo4{
def main(args:Array[String]):Unit={
//定义棋盘
var chessboard=ofDim[String](3,3);//默认值为null
//修改null为空
for(i<-0 to 2){
for(j<-0 to 2){
chessboard(i)(j)=" ";
}
}
//打印九宫格
println("三子棋游戏开始了,请选择棋子:0代表*, 1 代表X:");
var flag=StdIn.readInt();
if(flag==0){
println("您选择的是*");
}else{
println("您选择的是X");
}
while(true){
println("当前棋盘状况如下:");
viewChess(chessboard);//打印棋盘
if(flag==1){
println("该X棋子下了,请输入棋子坐标(i,j):");
}else{
println("该*棋子下了,请输入棋子坐标(i,j):");
}
var str=StdIn.readLine();
var x=str.charAt(1).toInt-48;
var y=str.charAt(3).toInt-48;//char转int
println("输入的坐标为:"+x+","+y);
var res=goChess(chessboard,x,y,flag);//下棋
flag=if(flag==1) 0 else 1;//修改标志位
if(res==0){
//检测
var rr=testChess(chessboard);
if(rr==1){
println("X棋子赢了");
return ;
}else if(rr==0){
println("*棋子赢了");
return ;
}else if(rr==2){
println("这局是和其,游戏结束");
return ;
}else{
println("-----下棋继续-----");
}
}else if(res==2){
println("输入的坐标错误");
flag=if(flag==1) 0 else 1;
}else if(res==1){
flag=if(flag==1) 0 else 1;
}
}
}
def testChess(arr:Array[Array[String]]):Int={
for(i<-0 to 2){//检测三行
if((arr(i)(0)==arr(i)(1))&&(arr(i)(1)==arr(i)(2))&&arr(i)(0)!=" "){
if(arr(i)(0)=="X"){
return 1;
}else{
return 0;
}
}
}
for(i<-0 to 2){//检测三列
if((arr(0)(i)==arr(1)(i))&&(arr(1)(i)==arr(2)(i))&&arr(0)(i)!=" "){
if(arr(0)(i)=="X"){
return 1;
}else{
return 0;
}
}
}
//检测对角线
if((arr(0)(0)==arr(1)(1))&&(arr(2)(2)==arr(1)(1))&&(arr(1)(1)!=" ")){
if(arr(1)(1)=="X"){
return 1;
}
return 0;
}
if((arr(0)(2)==arr(1)(1))&&(arr(2)(0)==arr(1)(1))&&(arr(1)(1)!=" ")){
if(arr(1)(1)=="X"){
return 1;
}
return 0;
}
//检测是否下完
for(i<- 0 to 2){
for(j<- 0 to 2){
if(arr(i)(j)==" "){//证明还有空位子
return 3;
}
}
}
return 2;
}
def goChess(chessboard:Array[Array[String]],x:Int,y:Int,flag:Int):Int={
for(i <- 0 to 2){
for(j <- 0 to 2){
if(i==x&&j==y){
if(chessboard(i)(j)!=" "){
println("这个地方已经有棋子请重新下:");
return 1;
}else{
if(flag==0){
chessboard(i)(j)="*";
}else{
chessboard(i)(j)="X";
}
return 0;
}
}
}
}
return 2;
}
def viewChess(chessboard:Array[Array[String]]):Unit={
for(i<-0 to 2){
for(j<-0 to 2){
print("|"+chessboard(i)(j)+"|");
}
println();
println("----------");
}
}
}
座右铭:站在别人的思想上,看见自己的不足,传播错误的经验,愿君不重蹈覆辙。
由于受限于本人经验,难免不足,如有建议,欢迎留言交流。