2011年11月26日 星期六

ZBrush練習


學校3D課開始教ZBrush了,感覺還滿有趣的,真的有雕塑的錯覺,繼續玩刺客教條 啟示錄。

2011年11月19日 星期六

地圖簡介

地圖畫面是2D遊戲中重要的一環,大致上分成兩種,一種是像貼瓷磚一樣的平面格子狀的,如勇者鬥惡龍,另一種是捲軸式的像清明上河圖的整張式的,如橫向或縱向射擊類遊戲,當然還有後續演變出來的所謂45度斜角(2﹒5D)地圖,最重要的是它們都離不開「迴圈」和「陣列」。

首先,先說拼接式的地圖,在學迴圈時應該都做過一個題目,利用迴圈輸出等腰三角形圖案,搭配上二維陣列就可做出地圖,首先看一下成品圖。



在開始之前我們要先準備圖檔,才能有東西顯示在地圖上,只是練習所以只做了兩個,草地跟沙漠。
 
草地  沙漠

大小為32X32的尺寸,接著就是開啟BCB寫程式吧。

程式碼:
物件  Name  屬性
Panel1 Panel1
Image1 Image1 高跟寬自己算吧,看你要放多少個地形再乘32。

Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include 
#include 
#include 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TImage *Image1;
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall drawbmp(); //drawbmp()函式
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Unit1.cpp
//---------------------------------------------------------------------------
#include 
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int cs=32,row=11,col=15;
//設定地圖變數,cs=32 為圖像的大小32x32,row=11 為地圖為11 行,col=15 為15 列
int map[11][15] = { //設定地圖陣列,1 為沙漠地形,0 為草地地形
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,1,0,0,0,1,0,1,1,1,1,1,0,1},
{1,0,1,0,0,0,1,0,0,0,1,0,0,0,1},
{1,0,1,0,0,0,1,0,0,0,1,0,0,0,1},
{1,0,1,1,1,1,1,0,0,0,1,0,0,0,1},
{1,0,1,0,0,0,1,0,0,0,1,0,0,0,1},
{1,0,1,0,0,0,1,0,0,0,1,0,0,0,1},
{1,0,1,0,0,0,1,0,1,1,1,1,1,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Panel1->DoubleBuffered=true; //設定雙倍緩衝,不會有閃爍
drawbmp(); //呼叫drawbmp()函式
}
//---------------------------------------------------------------------------
//drawbmp()函式
void __fastcall TForm1::drawbmp()
{
//此段可另寫一個loadbmp()函式
Graphics::TBitmap *map1; //利用Graphics 類別的TBitmap 方法設定map1 指標
map1 = new Graphics::TBitmap(); //產生map1 物件
map1->LoadFromFile("1.bmp"); //將1.bmp 載入到map1 物件的記憶體當中
Graphics::TBitmap *map2;
map2 = new Graphics::TBitmap();
map2->LoadFromFile("2.bmp");
for(int i=0;iCanvas->Draw(j*cs,i*cs,map1); //在Image1 的相對位置畫出map1 的圖形
break;
}
case 1: //當陣列內容為1 時
{
Image1->Canvas->Draw(j*cs,i*cs,map2);
break;
}
}
}
delete map1,map2; //釋放記憶體中map1 及map2 的內容
}
//---------------------------------------------------------------------------

2011年11月12日 星期六

期中考結束


 最近在玩的Flash網頁遊戲,本週才剛正式營運,畫面就像皇家騎士團2一樣,日本不愧為電視遊樂器王國。

期中考順利結束,這學期新教了影音剪輯特效軟體,Premiere Pro和After Effects,Adobe CS5又只支援64位元,是又要強迫我們更新軟硬體嗎。

2011年11月5日 星期六

閒聊

一直有在玩的eRepublik,終於要跟南韓開戰了。

宣戰布告-致eROC全國國民公開書

不嫌棄要當我下線的點下面連結

下線專用

或是要自力更生的

官網

註冊時不要用Facebook的帳號,會變美國人。

進入期中考週了,有空再說吧。