分享
 
 
 

游戏制作相关---HAM教程翻译本(三)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

好吧,我们到了第一星期最后一天。所以我认为是时候将前面所学到的东西组合一起来用。我们现在将会做一个Tetris风格的游戏。

注意: 我们实际上并不是完成这个游戏(虽然你会觉得自己自由试还好)。但为了以后的计画我们可能需要回到这里。

我现在只希望你知道什么是功能原型。

在这个教程中我建立一个精灵图像和二个背景图像。 拷贝这些文件到gfx目录内。步骤二就是这个程序。

首先,去那个目录中运行gfx2gba:

gfx2gba -t8 -m -pmaster.pal -fsrc *.bmp

接着将会产生的这些文件:

master.pal.c

block_L.map.c

block_L.raw.c

bubbles.map.c

bubbles.raw.c

outline_plain.map.c

outline_plain.raw.c

这将会为我们所需的全部图形产生必需的背景图像文件和它的调色板。问题是,我们不想将精灵放在一个tile/map格式中,因此接着我们将会键入指令:

gfx2gba -D -fsrc -pblock_L.pal -t8 block_L.bmp

注意: 我们将不需要block_L.map.c 或 block_L.pal ,因此你现在应该划除他们。

有一件事物在我们开始之前,你需要知道一样东西- 透明效果(或称为alpha混合)。例如有一种颜色在调色板的行列中是α颜色。这意味着你的图像中任何有这一种颜色的将会是变成透明。系统调色板在窗口中的第一像素点是黑色。因此,我的是黑色任何部份将不被显示到屏幕。你看着outline_plain.bmp和被建立的"游戏"的比较,你就能看得出这个。

好吧,我们讲到这里了。就开始吧!

//主要HAM头文件

#include"mygba.h"

//图形

#include "gfx/master.pal.c"

#include "gfx/bubbles.raw.c"

#include "gfx/bubbles.map.c"

#include "gfx/outline_plain.raw.c"

#include "gfx/outline_plain.map.c"

#include "gfx/block_L.raw.c"

//全局变量

u8 block;// 精灵索引为区块

u8 block_x=61;// 区块的 X 位置 (行)

u8 block_y=0;// 区块的 Y 位置 (列)

//功能原型

void vblFunc();//VBL功能

void query_keys();//检查键盘

void redraw_block();//刷新区块

//Main 功能

int main ()

{

//变量

map_fragment_info_ptr bg_bubbles;

map_fragment_info_ptr bg_outline_plain;

//初始化HAMlib

ham_Init;()

//在你的选择BG之上初始化本文显示系统

ham_InitText;(2)

//设置背景模式

ham_SetBgMode(1);

//初始化调色板

ham_LoadBGPal(&master_Palette,256);

ham_LoadObjPal(&master_Palette,256);

// 为我们的图像安装tileset

ham_bg[0].ti=ham_InitTileSet(&bubbles_Tiles,SIZEOF_16BIT(bubbles_Tiles),1,1);

ham_bg[1].ti=ham_InitTileSet(&outline_plain_Tiles,SIZEOF_16BIT(outline_plain_Tiles),1,1);

// 为我们的图像安装映像

ham_bg[0].mi=ham_InitMapEmptySet(3,0);

ham_bg[1].mi=ham_InitMapEmptySet(3,0);

bg_bubbles=ham_InitMapFragment(&bubbles_Map,30,20,0,0,30,20,0);

bg_outline_plain=ham_InitMapFragment(&outline_plain_Map,30,20,0,0,30,20,0);

ham_InsertMapFragment(bg_bubbles,0,0,0);

ham_InsertMapFragment(bg_outline_plain,1,0,0);

//显示背景

ham_InitBg(0,1,1,0);

ham_InitBg(1,1,0,0);

//输出一些本文

ham_DrawText(21,8,"Next Up");

//安装区块

block = ham_CreateObj(&block_L_Bitmap,0,2,OBJ_MODE_NORMAL,1,0,0,0,0,0,0,block_x,block_y);

//开始VBL中断处理程式

ham_StartIntHandler(INT_TYPE_VBL,&vblFunc);

While(1)

{

//使让程序不断运行着

}

return 0;

}//Main的结束 ()

//VBL 功能

void vblFunc()

{

ham_CopyObjToOAM();//对硬件的拷贝区块精灵

query_keys();// 检查按钮动作

redraw_block();// 刷新区块

return;

}//vblFunc()的结束

//检查按键动作

void query_keys()

{

if (F_CTRLINPUT_UP_PRESSED)

{

if (block_y

ham_DrawText;(1,18," Up")

}

if (F_CTRLINPUT_DOWN_PRESSED)

{

if (block_y

ham_DrawText;(1,18," Down ")

}

if (F_CTRLINPUT_LEFT_PRESSED)

{

if (block_x61) block_x--;

ham_DrawText;(1,18," Left ")

}

if (F_CTRLINPUT_RIGHT_PRESSED)

{

if (block_x

ham_DrawText;(1,18,"Right")

}

return;

}//query_keys()的结束

//刷新区块

void redraw_block()

{

ham_SetObjX(block,block_x);

ham_SetObjY(block,block_y);

return;

}//redraw_block()结束

编码解释

//全局变量

这个不用我多讲了吧,不清楚的话请翻阅有关内容。

//功能Protoypes

我将会解释AgbMain()中的每一个动作的作用是什么。

map_fragment_info_ptr bg_bubbles;

map_fragment_info_ptr是一个包含所有的neccessary数据的类型的结构体变量的指针。例如在一个已存在的屏幕映像之上拷贝只读存储器映像的这个部份。

ham_InitText(2)

对於这个计画我们将会在BG2上输出我们本文。 BG0和1将会作为playing field。

block =ham_CreateObj(...)

如果你不记得这个呼叫是什麽,看一看第五天的教程 。

ham_StartIntHandler(INT_TYPE_VBL,&vblFunc);

这是一个非常重要的功能。基本上它做什么是在GBA中告诉处理器每个VBL中断它应该运行我们specifiy。 在这情况下,我们将会产生一个称为vblFunc()的功能。 你可能问,一个VBL中断是什么? 一个VBL中断每一次发生在GBA画完一个屏幕时,通常是一秒60次的。

让我们谈论另一个功能。

//VBL功能

void vblFunc()

{

ham_CopyObjToOAM();

再一次,你从第五天起应该记得这。

query_keys() 和 redraw_block() 的功能在下面看见。

}//vblFunc() 的结束

//检查按键的动作

void query_keys(){...}

这个函数的作用是检查那个按键被按下。

让我们继续行进最後一个功能。

//刷新区块

void redraw_block()

{

ham_SetObjX(block,block_x);

ham_SetObjY(block,block_y);

这二个呼叫设定以为query_keys()为基础更新区块的位置。

}//redraw_block() 的结束

下载源代码

HAM Version 2.40 版和更高的版本

必需的HAM 程序: makefile http://www.aaronrogers.com/ham/Day7/makefile

图形: block_L.bmp http://www.aaronrogers.com/ham/Day7/gfx/block_L.bmp

block_L.raw.c http://www.aaronrogers.com/ham/Day7/gfx/block_L.raw.c

bubbles.bmp http://www.aaronrogers.com/ham/Day7/gfx/bubbles.bmp

bubbles.map.c http://www.aaronrogers.com/ham/Day7/gfx/bubbles.map.c

bubbles.raw.c http://www.aaronrogers.com/ham/Day7/gfx/bubbles.raw.c

master.pal.c http://www.aaronrogers.com/ham/Day7/gfx/master.pal.c

outline_plain.bmp http://www.aaronrogers.com/ham/Day7/gfx/outline_plain.bmp

outline_plain.map.c http://www.aaronrogers.com/ham/Day7/gfx/outline_plain.map.c

outline_plain.raw.c http://www.aaronrogers.com/ham/Day7/gfx/outline_plain.raw.c

Main文件: main.c http://www.aaronrogers.com/ham/Day7/main.c

编译了二进文件: hello.gba http://www.aaronrogers.com/ham/Day7/hello.gba

打包下载所有的文件: Day7_Project1_Tetris.zip

http://www.aaronrogers.com/ham/Day7/Day7_Project1_Tetris.zip

HAM Version 2.30 版和比更低的版本

必需的HAM 程序: makefile http://www.aaronrogers.com/ham/Day7/2.30/makefile

Main源文件: main.c http://www.aaronrogers.com/ham/Day7/2.30/main.c

编译了二进文件: hello.gba http://www.aaronrogers.com/ham/Day7/2.30/hello.gba

打包下载所有的文件: Day7_Project1_Tetris.zip

http://www.aaronrogers.com/ham/Day7/2.30/Day7_Project1_Tetris.zip

(ES_ZETA:限于本人的翻译能力值,难免会有错,望大家指出。

以前那六天的教程的翻译,由于时间问题,错误奇多,有空的话,我会更正,望大家见谅。

最后多谢大家支持!(^0^))

HAM 教程:第8天:精灵 #2 - 动画

(我希望能和ES_ZETA的译本保持一致吧,如有意见和建议望提出-mikeshi)

好了,我们已经在第一周涵盖了很多知识,但是,当

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有