2011年7月24日 星期日

3DS Max練習 - Camaro






最近變形金剛3上映,所以,做了台CAMARO來過過癮。

2011年7月15日 星期五

BCB小瑪俐設計(一)

BCB小瑪俐設計(一)

  由於自己本身也還是學生,因此,難免有些狂言謬論,如果有錯誤之處,還請多多指教,或者,你有些想法也可以提出討論。

  個人習慣在寫程式之前,會先想一下遊戲的雛型,比如說遊戲的畫面、規則等等…,這樣才好規劃流程圖,在做流程圖同時順便設計一下公式,接著就開始蒐集資料、參考的圖片,畫些遊戲圖片、使用者介面圖形,再來就開始寫程式,測試,除錯,繼續迴圈,直到完成為止。

  以小瑪俐來說,依面板上的水果圖案數量取亂數,比如說有14個,那就設定取亂數1~14,再來就是利用switch來移動LED燈,透過設定物件的Left、Top值來達成目的,使用計時器控制移動的速度。


程式碼:
bw為LED燈物件
//---------------------------------------------------------------------------



#include

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//全域變數(num中獎的號碼),(pos代表LED燈位置),(sel控制移動速度)

int num,pos = 1,sel;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

//點擊開始按鈕

void __fastcall TForm1::bGoClick(TObject *Sender)

{

  srand((unsigned)time(NULL)); //取得系統時間作為亂數種子

  Timer1->Enabled = true; //開啟計時器1

  Timer1->Interval = 100; //設定計時器執行時間

  num=rand()%14; //取亂數

  num += 56; //將取得的亂數加56,可多繞4圈

  sel = num;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

  sel--;

  if(sel<6) //判斷sel小於6增加計時器執行時間為500(0.5秒執行一次)

    Timer1->Interval = 500;

  if(sel<3) //判斷sel小於3增加計時器執行時間為1000(1秒執行一次)

    Timer1->Interval = 1000;

  if(sel==0) //判斷sel等於0關閉計時器

  {

    Timer1->Enabled = false;

  }



  pos++; //移動位置加1,等於15(即繞完一圈)回到1

  if(pos==15)

    pos=1;



  switch(pos) //依照pos移動到指定的位置

  {

    case 1:

      bw->Left = 64;

      bw->Top = 16;

      break;

    case 2:

      bw->Left = 112;

      bw->Top = 16;

      break;

    case 3:

      bw->Left = 160;

      bw->Top = 16;

      break;

    case 4:

      bw->Left = 208;

      bw->Top = 16;

      break;

    case 5:

      bw->Left = 208;

      bw->Top = 64;

      break;

    case 6:

      bw->Left = 208;

      bw->Top = 112;

      break;

    case 7:

      bw->Left = 208;

      bw->Top = 160;

      break;

    case 8:

      bw->Left = 160;

      bw->Top = 160;

      break;

    case 9:

      bw->Left = 112;

      bw->Top = 160;

      break;

    case 10:

      bw->Left = 64;

      bw->Top = 160;

      break;

    case 11:

      bw->Left = 16;

      bw->Top = 160;

      break;

    case 12:

      bw->Left = 16;

      bw->Top = 112;

      break;

    case 13:

      bw->Left = 16;

      bw->Top = 64;

      break;

    case 14:

      bw->Left = 16;

      bw->Top = 16;

      break;

  }
}

2011年7月9日 星期六

BCB 小瑪俐






同樣是升大二那年暑假寫的,沒有設定機率,也就是說隨機中獎的,Bar絕對有機會中,全部下注1也不會輸光,除非愛比大小。

最近在學Unity,方便是方便,但是,自帶的函數還真是多,光是GUI就有的玩了,以自訂遊戲介面部分來說啦,不過設定好之後就比較輕鬆了,直接呼叫就好了。

2011年7月2日 星期六

3DS Max練習 - 飛機

 AT-03 自強號 教練機
 F-16
 IDF 經國號
 幻象2000
P-51

除了P-51之外,其他都是目前國軍服役的機型。

2011年6月25日 星期六

3DS Max練習 - 人物


 練習的人物,只有頭。




 練習的怪物,牙齒懶的做了。







 期末考題目,考完後的練習。
Unity的期末作品。

又結束一個學期了,下次放飛機吧。

2011年6月18日 星期六

3DS Max練習 - 建築




茅草屋是作業,另一個是期中考的作品。
   剛學的時候做的涼亭。


 前陣子做了兩三天的小白宮。
 練習燈光跟攝影機的作品。

這學期都沒有專門的程式設計課,雖然有教Unity遊戲引擎的課,但是,上學期的Java剛教到物件導向就期末了,這學期本來跨系去資管選Java進階,結果,人數不足沒開課Orz,算了,自學吧,已經習慣了。下次放人物吧。

2011年6月11日 星期六

3DS Max練習 - 汽車



為了學材質和佈線做的車子,不過材質部分雖不滿意,但可接受,畢竟這學期才學Max,佈線的話,因為加上TurboSmooth來做圓滑,所以增加了一堆點跟面,下次放建築場景吧,上次講的零件部分,後來想到用Detach分離就好了,但是,槍管和滑套部分怎麼辦,呵呵,還是分開做好了。

2011年6月5日 星期日

3D Max練習作品






這次先放上槍械模型的部分,其他建築或車子就下次吧,這些都是剛開始學的時候做的,現在要重畫的話,做法應該會不一樣,學校教的傾向於一體成形,但是,以前畫Pro/E是零件一個一個做,也要考慮到是否有動作的部分吧,不然之後做動畫時再去喬,會更麻煩吧。

2011年5月14日 星期六

隨機亂數Random


random()函數對遊戲來說,也是很重要的,同樣在眾多的程式語言中也都有。那在遊戲中有什麼功用,其實並不是一般網遊中說的衝裝,或掉寶機率,那樣的網遊對台灣人不屈不撓的打寶精神來說,那遊戲中的神裝就人手一件了,而是可以用在不重要,比較需要隨性的地方,比如遊戲中隨意走動的NPC,用亂數產生1-4的數字,NPC依照數字往指定方向移動。

2011年5月7日 星期六

鍵盤輸入


玩家要控制遊戲中的角色,一般都是使用鍵盤或滑鼠,所以,要讓程式知道當玩家使用者按下鍵盤上的某某鍵,程式應該要做什麼動作,這時就需要知道按鍵所對應的ASCII碼,通常都會搭配switch敘述來使用,當然,如果要用if來做判斷也是可以啦,因此,這部分也是要做遊戲必須學會的。