2007年10月31日 星期三

WEEK6

這次是簡單製作3乘3的隨機圖形排列


我所使用的圖形有三種

方法是利用一個3X3的二維陣列
用RANDOM的方式填入0~2的數值

srand(time(NULL));

for(i = 0 ; i < j =" 0" href="http: tw=" s3360256="" jpg=""> 利用這個物件我可以比較輕鬆的利用陣列的內容把ImageList編號過的圖片給一次大批輸出
不需要一個個的去指定Image物件所要讀取的圖片內容

ImageList1->Draw(Image00->Canvas,0,0,map[0][0],true);
ImageList1->Draw(Image01->Canvas,0,0,map[0][1],true);
.
.
.
(類推)

然後是設定一下圖片的屬性
我希望把圖片的白色背景去除
所以將去背這個選項給開啟(Transparent==true)

最後利用一個按鈕
希望按下去的時候圖形會重新洗牌
這時我發現新的圖形會和舊的圖形疊在一起繪製
我使用的解決法是在重新繪製之前
先把每張圖讀入一張全白的圖
接著再用上面的方法繪製
最後使用
Image00->Repaint();
Image01->Repaint();
Image02->Repaint();
.
.
.
重新描繪圖
不過缺點是連續重新洗牌的時候
圖片更新速度不是很快

另外就是要思考關於兩張圖交換的事件要怎麼去設定
交換的時候基本上像BUBBLE SORT的交換陣列內容寫法再把圖片重新描繪出來就可以了
但是甚麼時候要交換的條件可以成立就比較麻煩一點了

這個部分完成後還要去思考超過三個在一排時候的消去方式
至於時間可以利用Timer這個物件去做設定
要寫這個遊戲比較難的地方可能就是點選兩個圖的時候可以交換的成立事件吧
目前的想法是利用一個flag當作紀錄
再用一些判斷式做前置判斷
這些地方還要再做一些思考


接著是8-Puzzle的切割部分

基本上就是照著老師的作法去實作的
可能不同的地方是用計算的方式
我是利用把原圖除3的方式把圖給割出來
不是手動去分配的

只是出現的結果似乎顏色有點跑掉
不知道是不是圖片大小的緣故?

再這邊碰到一個麻煩的地方就是假如我不是一個正方形的圖去做的話
除三的結果去割會變的很奇怪
這部份可能我再想看看吧

==================================================================================================

在本章的問題方面
對VRML這個虛擬實際技術比較有興趣
我記得這是可以使用在網頁的插件去實行3D場景的一個技術
那麼在裡面的儲存方式和描繪方式和OpenGL之類的3D軟體有甚麼樣的不同呢?

另外就是關於3D動畫方面
我知道有一種流行的3D風格
介於2D和3D之間的賽璐璐風格式3D
它在傳統3D那種描繪方式有甚麼不同呢?
感覺是比較平面的3D
還是他是利用2D貼圖的偽3D呢?


沒有留言:

張貼留言