當前位置:首頁 » 編程語言 » 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'); // 修改