iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
自我挑戰組

突然冒出的自學計畫系列 第 23

#Day23 做OOXX遊戲-1

  • 分享至 

  • xImage
  •  

是說昨天照著別人用了new之後,我又把他刪刪改改測試了幾下,好像比較知道new的意思了。
就是當你要建立一個新東西,但他還沒有名字,就放一個new
有點像「我要做個新的專屬東西,叫做(某個名字),照這個範本(type)來做」的意思 (好難講
反正我目前ㄉ理解是這樣,好像蠻合理ㄉ

昨天測試完二維陣列,接下來要試著完成簡報上的挑戰:做一個九宮格OOXX遊戲
這次寫起來蠻扁平的,不像上次一層又一層
基本上把邏輯釐清之後就順順ㄉ
以下是這次遇到的問題

1.怎麼random出一個座標?

這次要做玩家跟電腦比賽的OOXX,所以需要random出一個電腦要放置的座標
一開始我直接嘗試了
int i, j = m.Next(3, 3);
但顯然沒查過就亂試的下場就是完全沒用
看來還是沒辦法一行就處理掉,好麻煩歐

回歸正常做法,for迴圈兩次,或乾脆直接寫兩行:
int i = r.Next(3);
int j = r.Next(3);
還是要來一點複製貼上大法,省一點算一點

不過還是在此徵求可以一行解決的方法(首先文章要有人看)

2.檔案突然壞了?

在我某一次按下測試時,VS底下突然跑出這些資訊:

https://ithelp.ithome.com.tw/upload/images/20231007/201111745w9UPrhhxf.png
code裡面還真的沒有問題,於是我打開之前猜數字的檔案跑一次,正常到不行。

後來我認真讀了一下錯誤資訊,又往工作列瞄了一眼...

嗯,對,上一次測試的視窗還卡在自己的while迴圈裡沒有關掉啊啊啊

雖然平常測試玩點一下旁邊都會自己關掉,但這次寫到一半的東西根本沒有設置break的條件,他不會自己關掉啊啊啊
看來還是要保持直接按叉叉的習慣比較好。

遊戲本體總算是做好一半了,剩下的就是要判斷輸贏、結束遊戲
說起來簡單,但要做突然覺得好複雜啊QAQ

大家都會玩OOXX吧,我已經讓他每一輪都會印出來了,不然大家自己看著辦吧(喂不是

好啦認命,來寫更多的判斷式叭...
在判斷輸贏的部分,由於我們的範圍只有九宮格還蠻小的,我打算直接窮舉把它硬幹出來
反正這隻本來就醜(欸

最後的結構會拆成兩個部分:

-if 符合某個條件:輸or贏
-else if 全滿了:遊戲結束

啊喔,我有虛擬碼了欸!
(兩行意思意思)

窮舉輸贏條件的部分其實蠻簡單的,只是有點煩
而要判斷全滿的地方我寫了:

for(int p=0; p < 3; p++)
{
    ...
    else
    {
        for (int i = 0; i < 3; i++)
        {
            if (S[p,i] == " ")
            {
                continue;
            }
        }
        break;
    }
}

不過其實我整個還不確定continue能不能有用,亂用一通。

註:其實我感覺continue可能是沒用的,因為他似乎只會在自己那一層迴圈裡運作,不會對更外層有效果的樣子


上一篇
#Day22 二維陣列和assign的問題(?
下一篇
#Day24 做OOXX遊戲-2
系列文
突然冒出的自學計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言