|
Top / 奥内 奥内のページ †3月29日今日から一口日記を書こうと思います。 2007年2月20日 日本にいないでしょうが、日記のほうの容量がオーバーのようです
最新の5件を表示しています。 コメントページを参照 CharDef_2の改造 void CharDef_2(u8 id ,u16* image) {
u16 *tiles = MEM_BG_CHAR(0); // タイルキャラクタデータ アドレス
u8 i=0;
AddImageIntoImagePool16(id,(u16 *)image);
for(i=0;i<16;i++) {
tiles[i+id*64] = image[i]; + //(image[2*i+1]<<8);
tiles[i+16+id*64] = image[i+16]; //+ (image[2*i+1+32]<<8);
tiles[i+32+id*64] = image[i+32]; //+ (image[2*i+1+64]<<8);
tiles[i+48+id*64] = image[i+48]; //+ (image[2*i+1+96]<<8);
}
}
3月5日11時半
1月31日16時00分 ついでにSOLAのファイルも載せています。 学校で作ったパレット(古い) 家で作ったパレット256(新しい) 家で作ったパレット16 ToDO †
SOLA †1. はじめに †概要 †概要 スペック(仕様) †仕様 2.ライブラリの説明、ライブラリを用いたゲームの作成例 †2.1 変数とデータ型 †GBA.h の定義を継承している。
int =def= s32 GBAメモリ領域が 32KB なので無駄に使ってはいけない。 2.2 基本的なプログラムの形 †
#include "okukiso.h"
int main() {
first_Step();
while(1) {
WaitForVsync();
}
return 0;
}
2.3 文字列を表示させる方法 †
サンプルソース(Hello GBA) #include "okukiso.h"
int main() {
first_Step();
while(1) {
cursor(0,0);
prints("Hello GBA");
cursor(0,1);
print_int(1,3,0);
WaitForVsync();
}
return 0;
}
2.4 キーボード処理 †
サンプルソース(キーボード操作) #include "okukiso.h"
int main() {
first_Step();
while(1) {
if(PUSHED_UE) {
cursor( 0, 0); prints("UP ");
}
if(PUSHED_SITA) {
cursor( 0, 0); prints("DOWN ");
}
if(PUSHED_MIGI) {
cursor( 0, 0); prints("RIGHT");
}
if(PUSHED_HIDARI) {
cursor( 0, 0); prints("LEFT ");
}
if(PUSHED_A) {
cursor( 0, 0); prints("A ");
}
if(PUSHED_B) {
cursor( 0, 0); prints("B ");
}
WaitForVsync();
}
return 0;
}
2.5 グラフィック †2.5.1グラフィックデータの定義の仕方 †
2.5.2スプライトの表示 †
サンプルソース(キャラクタを表示) #include "okukiso.h"
const u8 hikou_data[16][(16+1)]={ //飛行機の画像データ
"0000000770000000",
"0000007667000000",
"0000007667000000",
"0000076556700000",
"0000076556700000",
"0060765445670600",
"0060765115670600",
"0067654114567600",
"0067654114567600",
"0076544664456700",
"0076544664456700",
"0765444664445670",
"0765444444445670",
"7765776556775677",
"0077006556007700",
"0077007777007700",
};
int main() {
u8 e=0;
first_Step();
e=CharDef(1, hikou_data);
while(1) {
SpriteSetPalleteNum(0, 11);
SpriteFlipNormal(0);
ChangeCharAtSpritePlane(e, 0);
SpriteSetPos(0, 0, 0);
WaitForVsync();
}
return 0;
}
サンプルソース(キャラクタ変更) #include "okukiso.h"
const u8 hikou_data[16][(16+1)]={ //飛行機の画像データ
"0000000770000000",
"0000007667000000",
"0000007667000000",
"0000076556700000",
"0000076556700000",
"0060765445670600",
"0060765115670600",
"0067654114567600",
"0067654114567600",
"0076544664456700",
"0076544664456700",
"0765444664445670",
"0765444444445670",
"7765776556775677",
"0077006556007700",
"0077007777007700",
};
const u8 teki_data[16][(16+1)]={ //敵の画像データ
"0000000000000000",
"2000000000000002",
"0200000000000020",
"0020000000000200",
"0002000000002000",
"0020200000020200",
"0020020000200200",
"0000000000000000",
"0200000000000020",
"0020000000000200",
"0202200000022020",
"0020022222200200",
"0202002002002020",
"0020002002000200",
"0002000220002000",
"0000000220000000",
};
int main() {
u8 e1=0,e2=0;
u8 e_id=0;
first_Step();
e1=CharDef(1, hikou_data);
e2=CharDef(1,teki_data);
SpriteSetPalleteNum(0, 11);
while(1) {
if(PUSHED_UE) {
e_id=e1;
} else {
e_id=e2;
}
ChangeCharAtSpritePlane(e_id, 0);
SpriteSetPos(0, 0, 0);
WaitForVsync();
}
return 0;
}
パレット変更 †サンプルソース(パレット変更) #include "okukiso.h"
const u8 hikou_data[16][(16+1)]={ //飛行機の画像データ
"0000000770000000",
"0000007667000000",
"0000007667000000",
"0000076556700000",
"0000076556700000",
"0060765445670600",
"0060765115670600",
"0067654114567600",
"0067654114567600",
"0076544664456700",
"0076544664456700",
"0765444664445670",
"0765444444445670",
"7765776556775677",
"0077006556007700",
"0077007777007700",
};
int main() {
u8 e=0;
u8 palette=10;
first_Step();
e=CharDef(1, hikou_data);
ChangeCharAtSpritePlane(e, 0);
SpriteSetPos(0, 0, 0);
while(1) {
if(PUSHED_UE) {
palette=11;
} else {
palette=10;
}
SpriteSetPalleteNum(0, palette);
WaitForVsync();
}
return 0;
}
サンプルソース(キャラクタをキーボードで動かす) #include "okukiso.h"//著者の作ったライブラリ
const u8 hikou_data[16][(16+1)]={ //飛行機の画像データ
"0000000770000000",
"0000007667000000",
"0000007667000000",
"0000076556700000",
"0000076556700000",
"0060765445670600",
"0060765115670600",
"0067654114567600",
"0067654114567600",
"0076544664456700",
"0076544664456700",
"0765444664445670",
"0765444444445670",
"7765776556775677",
"0077006556007700",
"0077007777007700",
};
int main() {
u8 x=0,y=0;
u8 e=0;
first_Step();
e=CharDef(1, hikou_data);
while(1) {
if(PUSHED_UE) {
y--;
}
if(PUSHED_SITA) {
y++;
}
if(PUSHED_MIGI) {
x++;
}
if(PUSHED_HIDARI) {
x--;
}
SpriteSetPalleteNum(0, 11);
SpriteFlipNormal(0); //
ChangeCharAtSpritePlane(e, 0);
SpriteSetPos(0, x, y);
WaitForVsync();
}
return 0;
}
2.5.3背景の表示(マップデータの定義の仕方) †
サンプルソース(背景を表示する) #include "okukiso.h"
const u16 maphai_data[16][16]={
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
};
const u8 map0_data[16][16+1]={
"DDDDDDDDDDDDDDDD",
"D7DD7DD7DD7DD7DD",
"7DD7DD7DD7DD7DD7",
"7DD7DD7DD7DD7DD7",
"DDDDDDDDDDDDDDDD",
"7DD7DD7DD7DD7DD7",
"DD7DD7DD7DD7DD7D",
"DD7DD7DD7DD7DD7D",
"DDDDDDDDDDDDDDDD",
"DD7DD7DD7DD7DD7D",
"D7DD7DD7DD7DD7DD",
"D7DD7DD7DD7DD7DD",
"DDDDDDDDDDDDDDDD",
"7DD7DD7DD7DD7DD7",
"DD7DD7DD7DD7DD7D",
"DD7DD7DD7DD7DD7D",
};
const u8 map1_data[16][16+1]={
"D7DD7111111DDD7D",
"7DD717777771D7DD",
"7DD17D7DD7D717DD",
"DD17D7DDDD7D71DD",
"D17D7DDDDDD7D71D",
"17D7DDDDDDDD7D71",
"17D7DDDDDDDD7D71",
"17D7DDDDDDDD7D71",
"17D7DDDDDDDD7D71",
"D17D7DDDDDD7D71D",
"DD17D7DDDD7D71DD",
"DDD17D7DD7D71DDD",
"DD7D17D77D71DDD7",
"D7D1997777F91D7D",
"D719FDF9FFD9F17D",
"DDDDDDD9FDDDDDDD",
};
int main() {
u8 e=0;
first_Step();
e=CharDef(1, map0_data);
e=CharDef(2, map1_data);
MAP(maphai_data);
while(1) {
WaitForVsync();
}
return 0;
}
サンプルソース(上のものと組み合わせる) #include "okukiso.h"//著者の作ったライブラリ
const u16 maphai_data[16][16]={
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1},
{1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
};
const u8 map0_data[16][16+1]={
"DDDDDDDDDDDDDDDD",
"D7DD7DD7DD7DD7DD",
"7DD7DD7DD7DD7DD7",
"7DD7DD7DD7DD7DD7",
"DDDDDDDDDDDDDDDD",
"7DD7DD7DD7DD7DD7",
"DD7DD7DD7DD7DD7D",
"DD7DD7DD7DD7DD7D",
"DDDDDDDDDDDDDDDD",
"DD7DD7DD7DD7DD7D",
"D7DD7DD7DD7DD7DD",
"D7DD7DD7DD7DD7DD",
"DDDDDDDDDDDDDDDD",
"7DD7DD7DD7DD7DD7",
"DD7DD7DD7DD7DD7D",
"DD7DD7DD7DD7DD7D",
};
const u8 map1_data[16][16+1]={
"D7DD7111111DDD7D",
"7DD717777771D7DD",
"7DD17D7DD7D717DD",
"DD17D7DDDD7D71DD",
"D17D7DDDDDD7D71D",
"17D7DDDDDDDD7D71",
"17D7DDDDDDDD7D71",
"17D7DDDDDDDD7D71",
"17D7DDDDDDDD7D71",
"D17D7DDDDDD7D71D",
"DD17D7DDDD7D71DD",
"DDD17D7DD7D71DDD",
"DD7D17D77D71DDD7",
"D7D1997777F91D7D",
"D719FDF9FFD9F17D",
"DDDDDDD9FDDDDDDD",
};
const u8 hikou_data[16][(16+1)]={ //飛行機の画像データ
"0000000770000000",
"0000007667000000",
"0000007667000000",
"0000076556700000",
"0000076556700000",
"0060765445670600",
"0060765115670600",
"0067654114567600",
"0067654114567600",
"0076544664456700",
"0076544664456700",
"0765444664445670",
"0765444444445670",
"7765776556775677",
"0077006556007700",
"0077007777007700",
};
int main() {
u8 x=0,y=0;
u8 e=0;
first_Step();
e=CharDef(1, map0_data);
e=CharDef(2, map1_data);
e=CharDef(3, hikou_data);
MAP(maphai_data);
while(1) {
if(PUSHED_UE) {
y--;
}
if(PUSHED_SITA) {
y++;
}
if(PUSHED_MIGI) {
x++;
}
if(PUSHED_HIDARI) {
x--;
}
SpriteSetPalleteNum(0, 11);
SpriteFlipNormal(0);
ChangeCharAtSpritePlane(e, 0);
SpriteSetPos(0, x, y);
WaitForVsync();
}
return 0;
}
2.6 サウンドの鳴らし方 †
サンプルソース(サウンドの鳴らし方) #include "okukiso.h"
int main() {
first_Step();
Music1Repeat("T220O4L4 RRRRRRRR CDEFEDCR EFGAGFER CRCRCRCR L8CCDDEEFF L4EDCR");
Music2("T220O5L4 CDEFEDCR EFGAGFER CRCRCRCR L8CCDDEEFF L4EDCR RRRRRRRR");
Percussion("T220L4Q1 RBRBRBRB RBRBRBRB8B8 RBRBRBRB RBRBRBRB8B8 RB8B8RBRBBC");
while(1) {
WaitForVsync();
}
return 0;
}
2.7 セーブの仕方 †
サンプルソース(セーブの仕方) #include "okukiso.h"//私の作ったライブラリ
int main() {
first_Step();
s8 a=SaveGet_16(0);
while(1){
if(PUSHED_UE){
a++;
SaveSet_16(0,a);
}
if(PUSHED_SITA){
a--;
SaveSet_16(0,a);
}
if(PUSHED_A){
a=0;
SaveSet_16(0,a);
}
cursor(0,0);
print_int(a,10,0);
WaitForVsync();
}
return 0;
}
2.8 テーブルテニスの作成 †#include "okukiso.h"
const u16 maphai_data[16][16]={
{1,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},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
};
const u8 map0_data[16][16+1]={
"DDDDDDDDDDDDDDDD",
"D7DD7DD7DD7DD7DD",
"7DD7DD7DD7DD7DD7",
"7DD7DD7DD7DD7DD7",
"DDDDDDDDDDDDDDDD",
"7DD7DD7DD7DD7DD7",
"DD7DD7DD7DD7DD7D",
"DD7DD7DD7DD7DD7D",
"DDDDDDDDDDDDDDDD",
"DD7DD7DD7DD7DD7D",
"D7DD7DD7DD7DD7DD",
"D7DD7DD7DD7DD7DD",
"DDDDDDDDDDDDDDDD",
"7DD7DD7DD7DD7DD7",
"DD7DD7DD7DD7DD7D",
"DD7DD7DD7DD7DD7D",
};
const u8 tama_data[16][(16+1)]={ //ボールの画像データ
"000000AAAA000000",
"0000AA8888AA0000",
"00AA88888888AA00",
"00A8866666688A00",
"0A886666666688A0",
"0A866644446668A0",
"A88664444446688A",
"A88664433446688A",
"A88664433446688A",
"A88664444446688A",
"0A866644446668A0",
"0A886666666688A0",
"00A8866666688A00",
"00AA88888888AA00",
"0000AA8888AA0000",
"000000AAAA000000",
};
const u8 tate0_data[16][(16+1)]={ //ラケットの画像データその1
"8888155555555555",
"8888155555555555",
"8888155555555555",
"8888155555555555",
"0888815555555555",
"0888815555555555",
"0888815555555555",
"0088881555555555",
"0088881555555555",
"0008888155555555",
"0000888815555555",
"0000008888155555",
"0000000000000000",
"0000000000000000",
"0000000000000000",
"0000000000000000",
};
const u8 tate1_data[16][(16+1)]={ //ラケットの画像データその2
"5555555555518888",
"5555555555518888",
"5555555555518888",
"5555555555518888",
"5555555555188880",
"5555555555188880",
"5555555555188880",
"5555555551888800",
"5555555551888800",
"5555555518888000",
"5555555188880000",
"5555518888000000",
"0000000000000000",
"0000000000000000",
"0000000000000000",
"0000000000000000",
};
#define INIT 0
#define PLAY 1
#define GAME_OVER 2
#define KABE_SITA 9*16
#define KABE_UE 1*16
#define KABE_MIGI 13*16
#define KABE_HIDARI 1*16
s16 x=0,y=0,bx=1*16,by=1*16;
s8 vect_bx=0,vect_by=0;
u16 map,tama,tate0,tate1;
u16 time_c;
u8 Init(){//初期化
first_Step();
map=CharDef(1,map0_data);
tama=CharDef(2,tama_data);
tate0=CharDef(2,tate0_data);
tate1=CharDef(2,tate1_data);
MAP(maphai_data);
x=1*16,y=KABE_SITA,bx=1*16,by=1*16,vect_bx=1,vect_by=1;
cls(); cursor(0,0); prints("tennis");
time_c=0;
return PLAY;
}
u8 Syoutotu(s16 n_1,s16 n_2,s16 sa){
s16 sa2=0;
if(n_1-n_2<0){
sa2=(n_1-n_2)*(-1);
}else{
sa2=(n_1-n_2);
}
if(sa2<sa){
return 1;
}else{
return 0;
}
}
u8 Syoutotu_xy(u16 ax,u16 ay, u8 ax_1,u8 ay_1,u8 ax_2, u8 ay_2,
u16 bx,u16 by, u8 bx_1,u8 by_1,u8 bx_2, u8 by_2){
u16 kyori_ax_half = (ax_2-ax_1)/2;
u16 kyori_ay_half = (ay_2-ay_1)/2;
u16 kyori_bx_half = (bx_2-bx_1)/2;
u16 kyori_by_half = (by_2-by_1)/2;
if((Syoutotu(ax+ax_1+kyori_ax_half,
bx+bx_1+kyori_bx_half,
kyori_ax_half+kyori_bx_half))
&&
(Syoutotu(ay+ay_1+kyori_ay_half,
by+by_1+kyori_by_half,
kyori_ay_half+kyori_by_half))){
return 1;
}else{
return 0;
}
}
u8 gamePlay(){
if(time_c%2==0){ //勝手に動くボールのムーブカウント
// ボールの移動
bx+=vect_bx*2;
by+=vect_by*2;
// 画面に画像を出力する
SpriteSetPalleteNum(0, 11);
SpriteFlipNormal(0);
ChangeCharAtSpritePlane(tama, 0);
SpriteSetPos(0, bx, by);
SpriteSetPalleteNum(1, 12);
SpriteFlipNormal(1);
ChangeCharAtSpritePlane(tate0, 1);
SpriteSetPos(1, x, y);
SpriteSetPalleteNum(2, 12);
SpriteFlipNormal(2);
ChangeCharAtSpritePlane(tate1, 2);
SpriteSetPos(2, x+16, y);
cursor(22,7);
print_int(time_c,4,0);//print_intは数字の出力
// 壁との衝突判定と処理(向きの反転)
if((bx<KABE_HIDARI)||(bx>KABE_MIGI))
vect_bx=-vect_bx;
if((by<KABE_UE)||(by>y))
vect_by= -vect_by;
}
if(PUSHED_MIGI){ //右カーソル
x+=2;
if(x>KABE_MIGI-16){ //バーの右にいける限界
x=KABE_MIGI-16;
}
}
if (PUSHED_HIDARI){ //左カーソル
x-=2;
if(x<KABE_HIDARI){ //バーの左にいける限界
x=KABE_HIDARI;
}
}
if(Syoutotu_xy(bx,by,0,13,16,15,
x, y,0,0,16*2,1)){
SpriteSetPalleteNum(0, 13);
SpriteSetPalleteNum(1, 14);
SpriteSetPalleteNum(2, 14);
vect_by= -vect_by;
by=y-16;
}
if(by>y)
return GAME_OVER;
time_c++;//時間のカウント
return PLAY;
}
s8 gameover(){
cursor(3,7); prints(" GAME OVER");
cursor(3,9); prints("Push A Button!");
while(1)
if(PUSHED_A) //Aボタン
break;
return INIT;
}
void game(){
s8 fase=INIT;
while (1) {
switch(fase) {
case INIT:
fase=Init(); break;
case PLAY:
fase=gamePlay(); break;
case GAME_OVER:
fase=gameover(); break;
}
WaitForVsync();
}
}
// メイン関数
int main(){
game();
}
3. 「ライブラリ」の詳細説明 †すべての「ライブラリ」関数の説明 †
4. 残された課題 †4.1 「ライブラリ」作成面の課題 †「衝突判定」と「セーブ機能」と「マップの拡大」の関数をを「ライブラリ」に入れたい。 4.2 「ライブラリ」使用面の課題 †実際に「ライブラリ」を作った著者のゲーム作成と今後読者がこの「ライブラリ」を使い作るゲーム作成では差があるのが当たり前である。だから今後は著者はこの「ライブラリ」を使う人の意見を重要視しライブラリ」を発展させていくことを考える。 5. 終わりに †この卒論を通して言いたい事 5.1 著者が「プログラミング」を学ぼうと思った理由 †著者がプログラミングを学ぼうと思った理由は「誰もがプレイできる環境で自分でゲームを開発したかったから」である。もちろんプログラミングの知識がなかったとしても「開発ツール」を使えば開発をすることができる。しかしそれでは表向きの「開発」はできたとしても、根本の「開発」はできないと感じる。そこでできるだけ大学の「プログラミング」の授業を取りいれた。そこで現在「ゲーム開発」に使っているCやJavaなどを勉強を経験した。 5.2 著者にとっての「ゲーム開発」の環境 †しかし多少授業で学んだ知識では「誰でもプレイできる環境」ではできないと感じた。もちろん「パソコン」があり「パソコンが使える人」ならば「誰でもプレイできる環境」かもしれないが、著者が求めた「誰でもプレイできる環境」とは「ゲームを遊ぶことを重視した環境」である。例えば「ファミリーコンピュータ」などの「ゲーム機種」である。 そこで著者が選んだのは「ゲームボーイアドバンス」の環境であった。理由は「持ち運びができる」ことと「今の著者のゲームの開発能力の限界(実際ゲームボーイアドバンス開発は能力的に限界でした。)」と感じたからである。 5.3 「プログラミング」と「ゲーム開発」 †著者のように「ゲーム開発」をしたいが、願望があるのに「プログラミング」と「ゲーム開発」という二つの壁にぶつかり、妥協してしまった人も多いと感じられる。実際、著者も「プログラミング」と「ゲーム開発」をつなげるのに、2,3回失敗し妥協した経験がある。その経験のおかげでこの二つをつなげることができた現在だからこそ「ゲーム開発」に夢中になれたと感じる。 6. 参考集 †6.1 参考文献 †基本情報技術者【午前】問題集 Linuxから目覚める僕らのゲームボーイ! ゲームボーイアドバンス・プログラミングバイブル 無料ツールでゲームプログラミング 6.2 参考ホームページアドレス †GBAプログラミング研究所 題名「C言語講座」 ドット絵講座 東大ゲームボーイ ANSI C++書式
Counter: 6237,
today: 2,
yesterday: 4
|