当前位置:首页 » 编程语言 » c语言井字棋落子显示不出来
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言井字棋落子显示不出来

发布时间: 2023-02-26 06:42:38

1. c语言 怎么编程井字棋

一两句话说不明白,你先做个简单的流程规划,把这个问题细化,然后再考虑每一步都需要怎么做,比如需要建立几个类,需要定义什么变量,如何存贮等问题。这个必须一步步来,哪有你这样解决问题的

2. C语言编写井字棋游戏 代码已有半成品

你初始化一个字符数组,里面都给他一样的初始值 E
X 下了就改成X ,O 下了就改成 O,下完以后判断横竖斜三条线有没有一样的,

一共就九个格子,下一步就少一步 ,下之前判断一下,如果等于E ,就是空的,可以放子。
下完一步总步数减一,你这样不就能确定还有几步可以走了。
九步都下完如果没有横竖斜都一样的不就是平局吗,所有数组元素的值都不等于E了不就结束了,或者九步完了也结束了

另外,少用GOTO ,变量定义最好有意义,写点注释

3. c语言编的五子棋源代码

//自定义控件,然后在工具箱拖过来用再把BackColor设置为Transparent
:ListBox
{
publicTransparentListBox()
{
this.SetStyle(ControlStyles.UserPaint,true);
this.SetStyle(ControlStyles.SupportsTransparentBackColor,true);
}
(EventArgse)
{
this.Invalidate();
base.OnSelectedIndexChanged(e);
}
protectedoverridevoidOnPaint(PaintEventArgse)
{
if(this.Focused&&this.SelectedItem!=null)
{
RectangleitemRect=this.GetItemRectangle(this.SelectedIndex);
e.Graphics.FillRectangle(Brushes.Green,itemRect);
}
for(inti=0;i<Items.Count;i++)
{
e.Graphics.DrawString(this.GetItemText(Items[i]),this.Font,newSolidBrush(this.ForeColor),this.GetItemRectangle(i));
}
base.OnPaint(e);
}
}

4. 用C语言,编程,求助大神

时间仓促,做得比较简陋。

#include<stdio.h>
#include<windows.h>
#include<conio.h>
voidmenu();
voidgame();
intmain()
{
intn=0;
menu();
while(scanf("%d",&n))
{
system("cls");
menu();
switch(n)
{
case1:game();break;
case2:return0;
default:printf("请重新输入:");
}

}
}
voidmenu()
{
printf("********** ");
printf("*井字棋小游戏* ");
printf("*按1开始游戏* ");
printf("*按2退出游戏* ");
printf("********** ");
}
voidgame()
{
printf("请在小键盘输入1-9");
intstep_number=1;
intboard[3][3]={0};
while(1)
{
charnum;
num=getch();
system("cls");
if(num=='1')board[2][0]+=step_number++;
if(num=='2')board[2][1]+=step_number++;
if(num=='3')board[2][2]+=step_number++;
if(num=='4')board[1][0]+=step_number++;
if(num=='5')board[1][1]+=step_number++;
if(num=='6')board[1][2]+=step_number++;
if(num=='7')board[0][0]+=step_number++;
if(num=='8')board[0][1]+=step_number++;
if(num=='9')board[0][2]+=step_number++;
for(inti=0;i<3;i++)//打印棋盘
{
printf(" ");
for(intj=0;j<3;j++)
{
if(board[i][j]==0)printf("_");
elseif(board[i][j]%2==1)printf("X");
elseif(board[i][j]%2==0)printf("O");
}
}

for(inti=0;i<3;i++)
{
if(board[i][0]!=0&&board[i][1]!=0&&board[i][2]!=0)
{
if(board[i][0]%2==1)
{
if(board[i][0]%2==board[i][1]%2&&board[i][0]%2==board[i][2]%2)
printf(" X方胜! ");
}
if(board[i][0]%2==0)
{
if(board[i][0]%2==board[i][1]%2&&board[i][0]%2==board[i][2]%2)
printf(" O方胜! ");
}
}


}
for(intj=0;j<3;j++)
{
if(board[0][j]!=0&&board[1][j]!=0&&board[2][j]!=0)
{
if(board[0][j]%2==1)
{
if(board[0][j]%2==board[1][j]%2&&board[0][j]%2==board[2][j]%2)
printf(" X方胜! ");
}
if(board[0][j]%2==0)
{
if(board[0][j]%2==board[1][j]%2&&board[0][j]%2==board[2][j]%2)
printf(" O方胜! ");
}
}

}
if(board[0][0]!=0&&board[1][1]!=0&&board[2][2]!=0)
{
if(board[0][0]%2==1)
{
if(board[0][0]%2==board[1][1]%2&&board[0][0]%2==board[2][2]%2)
printf(" X方胜! ");
}
if(board[0][0]%2==0)
{
if(board[0][0]%2==board[1][1]%2&&board[0][0]%2==board[2][2]%2)
printf(" O方胜! ");
}
}
if(board[0][2]!=0&&board[1][1]!=0&&board[2][0]!=0)
{
if(board[0][2]%2==1)
{
if(board[0][2]%2==board[1][1]%2&&board[0][2]%2==board[2][0]%2)
printf(" X方胜! ");
}
if(board[0][2]%2==0)
{
if(board[0][2]%2==board[1][1]%2&&board[0][2]%2==board[2][0]%2)
printf(" O方胜! ");
}
}

if(step_number>10)
{
printf("平局 ");
printf("按任意键回主菜单");
if(getchar())break;
}
}

}

5. 用c语言写井字棋游戏 求教一个问题

用char数组存棋盘,并记录当前是玩家1还是玩家2。

如果用户输入0,首先判断当前玩家是1还是2。如果是1,就board[0] = 'O';否则board[0] = 'X'。

伪代码就类似于:

charboard[10]="";//初始为9个空格,并且多留一个位置放''
intplayer=1;//从玩家1开始,取值为1或2
intposition;//玩家在哪个格子放O或X。取值为0~8
while(true){
scanf("%d",&position);//获取玩家输入
if(player==1){//对于玩家1,应该往棋盘上放O,下一次就轮到玩家2
board[position]='O';
player=2;
}else{//对于玩家2,应该往棋盘上放X,下一次就轮到玩家1
board[position]='X';
player=1;
}
print(board);//输出棋盘(需要另外实现)
if(gameOver(board)){//检查输赢(需要另外实现)
//输出谁赢了并退出
break;
}
}

6. c语言井字游戏的问题求助!

错误集中在下面这段语句,即输入下棋位置的合理性判断。
do
{
printf("Player %d,please enter where you want to put your %c:",player,(player==1)?'x':'o');
scanf("%d",&choice);
row=--choice/3;
column=--choice%3; // 第一处错误
}while(i<1||i>9||board[row][column]>'9'); // 第二处错误
第一处错误是:column=--choice%3;
原因:--运算符没搞清楚。--运算符意思是先减一,再做别的运算。那么,这句话就相当于 choice -= 1; coloumn = choice%3; 这样就看出来, choice -= 1;这半句话是多余的,只要出现在 row=--choice/3;这里就足够了。
因为这里多运算了一次choice-1,所以输入1的时候行运算正确而列运算少了1,要么触碰边界,要么遇到了其他格子。

由于--运算符很容易出错,所以一般谨慎的程序员很少用,转而用复杂的语句代替,至少意思比较明白。

第二处错误是: i<1||i>9
原因:i 这里应该是棋手的落子顺序。第一手是0,判断为棋手1。但是用在这个语句里明显出错。这个语句应当是判断棋手落子的位置,即是不是下在棋盘外面,所以应当是choice<1 || choice>9,然而结合第一处错误,仍然是错的,因为choice已经在计算row 和column的时候被改变了。

因为这处错误,第一手棋永远无法走完,因为i初始值为0,满足i<1这个条件,进而出现死循环

结合两处错误,建议这样改:

do
{
printf("Player %d,please enter where you want to put your %c:",player,(player==1)?'x':'o');
scanf("%d",&choice);
row=(choice-1)/3; // 修改
column=(choice-1)%3; // 修改
}while(choice<1||choice>9||board[row][column]>'9'); // 修改