代码部分小白正在学c,但专业教材直接学java,并且要求java写一篇五子棋,但c与java相近,并且之前写过井字棋,所以中间也没什么问题,很快就能写出来,之后也有可能出一篇详解代码的部分
public static char is_win(char board[][])
{ //棋盘判断
int qi_pan=0;
for(int rows=0;rows<10;rows++)
{ for(int cols=0;cols<10;cols++)
{ if(qi_pan==1)
break;
if(board[rows][cols]=='-')
qi_pan=1;
}
}
//横列判断
char qi_zi='n';
int p1_iswin=0;
int p2_iswin=0;
for(int rows=0;rows<10;rows++)
{ p1_iswin=0;
p2_iswin=0;
for(int cols=0;cols<10;cols++)
{ if(board[rows][cols]=='-')
{ p1_iswin=0;
p2_iswin=0;
}
if(board[rows][cols]=='*')
{ p1_iswin++;
p2_iswin=0;
}
if(p1_iswin==5)
{ qi_zi='*';
break;
}
if(board[rows][cols]=='0')
{ p1_iswin=0;
p2_iswin++;
}
if(p2_iswin==5)
{ qi_zi='0';
break;
}
}
}
//竖列判断
if(qi_zi=='n')
{
for(int rows=0;rows<10;rows++)
{ p1_iswin=0;
p2_iswin=0;
for(int cols=0;cols<10;cols++)
{ if(board[cols][rows]=='-')
{ p1_iswin=0;
p2_iswin=0;
}
if(board[cols][rows]=='*')
{ p1_iswin++;
p2_iswin=0;
}
if(p1_iswin==5)
{ qi_zi='*';
break;
}
if(board[cols][rows]=='0')
{ p1_iswin=0;
p2_iswin++;
}
if(p2_iswin==5)
{ qi_zi='0';
break;
}
}
}
}
//左上对角线判断
if(qi_zi=='n')
{
for(int i=0;i<=5;i++)
{ p1_iswin=0;
p2_iswin=0;
int rows=i;
int cols=0;
int rows_right=10;
int cols_right=10-i;
while(rows if(board[rows][cols]=='-')
{ p1_iswin=0;
p2_iswin=0;
}
if(board[cols][rows]=='*')
{ p1_iswin++;
p2_iswin=0;
}
if(p1_iswin==5)
{ qi_zi='*';
break;
}
if(board[cols][rows]=='0')
{ p1_iswin=0;
p2_iswin++;
}
if(p2_iswin==5)
{ qi_zi='0';
break;
}
rows++;
cols++;
}
}
}
//左上上部分对角线判断
if(qi_zi=='n')
{ for(int i=0;i<=5;i++)
{ p1_iswin=0;
p2_iswin=0;
int rows=0;
int rows_right=10-i;
int cols=i;
int cols_right=10;
while(rows if(board[rows][cols]=='-')
{ p1_iswin=0;
p2_iswin=0;
}
if(board[rows][cols]=='*')
{ p1_iswin++;
p2_iswin=0;
}
if(p1_iswin==5)
{ qi_zi='*';
break;
}
if(board[rows][cols]=='0')
{ p1_iswin=0;
p2_iswin++;
}
if(p2_iswin==5)
{ qi_zi='0';
break;
}
rows++;
cols++;
}
}
}
//右上对角线上半部分判断
if(qi_zi=='n')
{ for(int i=0;i<=5;i++)
{ p1_iswin=0;
p2_iswin=0;
int row=i;
int row_right=9;
int col=9;
int col_right=i;
while(row<=row_right&&col>=col_right)
{ if(board[row][col]=='-')
{ p1_iswin=0;
p2_iswin=0;
}
if(board[row][col]=='*')
{ p1_iswin++;
p2_iswin=0;
}
if(p1_iswin==5)
{ qi_zi='*';
break;
}
if(board[row][col]=='0')
{ p1_iswin=0;
p2_iswin++;
}
if(p2_iswin==5)
{ qi_zi='0';
break;
}
row++;
col--;
}
}
}
//右上对角线上半部分
if(qi_zi=='n')
{ for(int i=0;i<=5;i++)
{ p1_iswin=0;
p2_iswin=0;
int rows=0;
int row_right=9-i;
int col=9-i;
int col_right=0;
while(col>=col_right&&rows<=row_right)
{ if(board[rows][col]=='-')
{ p1_iswin=0;
p2_iswin=0;
}
if(board[rows][col]=='*')
{ p1_iswin++;
p2_iswin=0;
}
if(p1_iswin==5)
{ qi_zi='*';
break;
}
if(board[rows][col]=='0')
{ p1_iswin=0;
p2_iswin++;
}
if(p2_iswin==5)
{ qi_zi='0';
break;
}
rows++;
col--;
}
}
}
if(qi_zi=='0')
return '0';
if(qi_zi=='*')
return'*';
if(qi_pan==1)
return 'n';
if(qi_pan==0)
return 'y';
return 'z';
}
//游戏开始0 *
public static int game(char board[][])
{int no=0;
int flag=0;
while(flag==0)
{ Scanner rua=new Scanner(System.in);
if(no==0)
{ System.out.println("*:please input the number");
int zuo_biao=rua.nextInt();
int cols=zuo_biao%10;
int rows=zuo_biao/10%10;
if(board[rows][cols]!='-')
{ continue;
}
board[rows][cols]='*';
menu(board);
char f=is_win(board);
if(f=='0')
{ System.out.println("0 winner!!");
return 0;
}
else if(f=='*')
{ System.out.println("* winner!!");
return 0;
}
else if(f=='y')
{ System.out.println("no winner");
return 0;
}
}
System.out.println("0:please input the number");
int zuo_biao=rua.nextInt();
int cols=zuo_biao%10;
int rows=zuo_biao/10%10;
if(board[rows][cols]!='-')
{ no=1;
continue;
}
else
{ no=0;
}
board[rows][cols]='0';
menu(board);
char r=is_win(board);
if(r=='0')
{ System.out.println("0 winner!!");
return 0;
}
else if(r=='*')
{ System.out.println("* winner!!");
return 0;
}
else if(r=='y')
{ System.out.println("no winner");
return 0;
}
}
return 0;
}
//用户选择开始游戏或退出游戏
public static int select()
{System.out.println("play: 1");
System.out.println("exit 0");
Scanner sc=new Scanner(System.in);
int flag=sc.nextInt();
return flag;
}
//棋盘初始化
public static void init(char board[][])
{for(int u=0;u<10;u++)
{ for(int i=0;i<10;i++)
{ board[u][i]='-';
}
}
}
//棋盘打印
public static void menu(char board[][])
{System.out.print(" ");
for(int rpw=0;rpw<10;rpw++)
{System.out.print(" ");
System.out.print(""+rpw);
}
System.out.println("");
for(int rows=0;rows<10;rows++)
{System.out.print(""+rows);
System.out.print(" ");
for(int cols=0;cols<10;cols++)
{System.out.print(""+board[rows][cols]);
System.out.print(" ");
}
System.out.println("");
}
}
//主函数
public static void main(String[] args)
{char[][] board=new char[10][10];
int flag=1;
do
{flag=select();
switch(flag)
{case 1:
{init(board);
menu(board);
game(board);
break;
}
case 0:
{ break;
}
default:
{ System.out.println("error number,please input the right number again");
}
}
}
while(flag!=0);
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧