minigame.c

来自「GBA游戏程序」· C语言 代码 · 共 62 行

C
62
字号
#include "common.h"
#include "gfxex.h"
void dstreet(){  
	InitializeSprites();
	const u16 u[10]={2,4,3,2,6,3,3,5,3,4,5,4};// attribute0 for upper ones is  0x200f
	const u16 d[6]={3}; // attribute0 for lower ones is  0x202b
	const u16 speedu=30;
	const u16 speedd=40;
	u16 hitu=0,hitd=0,ucntr=0,dcntr=0;
	u16 loop;
	u16* vram=VRAM_BASE;
	u16* oamd=OAMDATA;
	u16 dir[6]; 
	for(loop=0;loop<128;loop++) *oamd++=up_gfx[loop];
	for(loop=0;loop<128;loop++) *oamd++=down_gfx[loop];
	for(loop=0;loop<128;loop++) *oamd++=left_gfx[loop];
	for(loop=0;loop<128;loop++) *oamd++=right_gfx[loop];
	for(loop=0;loop<128;loop++) *oamd++=L_gfx[loop];
	for(loop=0;loop<128;loop++) *oamd++=R_gfx[loop];
	for(loop=0;loop<6;loop++) dir[loop]= (512+8*loop)| PRIORITY(0);
	for(loop=0;loop<19200;loop++) vram[loop]=0;
	BltTo(window_gfx,vram,20,0,200,72,0);
	DrawText("按A键开始",100,100,30);
	for(loop=0;loop<5;loop++) sprites[loop].attribute0=COLOR_256 |15;
	for(loop=5;loop<8;loop++) sprites[loop].attribute0=0x202b;
	CopyOAM();
	while (!KEY_A_PRESSED) ;
	u16 dirc[8];
	u16 framecntr=0;
	u16 sprx[8]={255,255,255,255,255,255,255,255};
	u16 rest[8]={1,255,255,255,255,1,255,255};
	while(1){
		WaitVSync();UPDATA_INPUT(); framecntr++;
		if(!framecntr%speedu){
			for(loop=0;loop<5;loop++){
				if(sprx[loop]!=255) if(sprx[loop]--==35)sprx[loop]=255;
				else if(rest[loop]==255) ;
				else if(rest[loop]==253) ;	
				else{
					if((!(rest[loop]++%3))&&ucntr<10){ rest[loop]=253;
					if(loop==4) rest[0]=1; else rest[loop+1]=1;
					sprx[loop]=200;
					dirc[loop]=dir[u[ucntr++]];
					}					
				}
			}
		}
		for(loop=0;loop<5;loop++) {sprites[loop].attribute1=SIZE_16  |sprx[loop];
		sprites[loop].attribute2=dir[loop];}
		CopyOAM();
		saveshort(0,dirc[0]);
		DrawText("A",sprx[0],dirc[0],50);
		/*if(!framecntr%speedd){
			for(loop=5;loop<8;loop++){
				if(sprx[loop]!=255) sprx[loop]--;
			}
		}*/
	}
	WaitTime(0,900);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?