是說昨天照著別人用了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底下突然跑出這些資訊:
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可能是沒用的,因為他似乎只會在自己那一層迴圈裡運作,不會對更外層有效果的樣子