今急いで作るものじゃないけど会社の休み時間と通勤時間
何もしないのは勿体無いのでちょこちょこと作業再開中。
GMC4NDS でのモジュール分けの反省点を踏まえて頑張ってみよう。
一先ずの状態のソースなので仕様は変わるかもしれませぬ。
main.c
/*--------------------------------------------------------------------------------- disp module test version 0.01 Jan 18, 2010 By. REGEKATSU ---------------------------------------------------------------------------------*/ #include <stdio.h> #include <nds/ndstypes.h> #include <nds/interrupts.h> #include <nds/arm9/input.h> #include <nds/arm9/console.h> #include "JankenTypes.h" #include "Disp.h" //--------------------------------------------------------------------------------- int main(void) { //--------------------------------------------------------------------------------- u8 win_cnt = 0; JANKEN_JUDGE judge = JANKEN_MAKE; consoleDemoInit(); printf("\x01b[0;0Hdisp module test\n\nversion 0.01\nJan 18, 2010\n\nBy. REGEKATSU\n\n\n"); //clearDisp Disp_Clear(); while(1) { swiWaitForVBlank(); scanKeys(); //JankenWinCount Disp_SetWinCount( BIT(win_cnt) ); //JankenJudge Disp_SetJudge( BIT(judge) ); //JankenHand if(keysDown() & KEY_LEFT){ Disp_SetHand( BIT(JANKEN_GOO) ); }else if(keysDown() & KEY_UP){ Disp_SetHand( BIT(JANKEN_CHOKI) ); }else if(keysDown() & KEY_RIGHT){ Disp_SetHand( BIT(JANKEN_PAR) ); }else if(keysDown() & KEY_START){ Disp_SetHand( BIT(JANKEN_GOO) | BIT(JANKEN_CHOKI) | BIT(JANKEN_PAR) ); }else if(keysDown() & KEY_SELECT){ Disp_SetHand(0); } if(keysDown() & KEY_A){ if(win_cnt < 5){ win_cnt++; }else{ win_cnt = 0; } } if(keysDown() & KEY_B){ if(judge < JANKEN_KACHI){ judge++; }else{ judge = JANKEN_MAKE; } } } } //---------------------------------------------------------------------------------
JankenTypes.h
/*--------------------------------------------------------------------------------- jankenTypes define header version 0.01 Jan 18, 2010 By. REGEKATSU ---------------------------------------------------------------------------------*/ #ifndef _JANKEN_TYPES_H_ #define _JANKEN_TYPES_H_ typedef enum{ JANKEN_MAKE = 0, JANKEN_AIKO = 1, JANKEN_KACHI = 2 }JANKEN_JUDGE; typedef enum{ JANKEN_GOO = 0, JANKEN_CHOKI = 1, JANKEN_PAR = 2 }JANKEN_HAND; #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif #endif //_JANKEN_TYPES_H_
Disp.h
/*--------------------------------------------------------------------------------- disp module header version 0.01 Jan 18, 2010 By. REGEKATSU ---------------------------------------------------------------------------------*/ #ifndef _DISP_H_ #define _DISP_H_ #include <nds/ndstypes.h> #ifdef __cplusplus extern "C" { #endif void Disp_Clear(void); void Disp_SetWinCount(u8 win_cnt); void Disp_SetJudge(u8 judge); void Disp_SetHand(u8 hand); #ifdef __cplusplus } #endif #endif //_DISP_H_
Disp.c
/*--------------------------------------------------------------------------------- disp module routine version 0.01 Jan 18, 2010 By. REGEKATSU ---------------------------------------------------------------------------------*/ #include <stdio.h> #include <string.h> #include "Disp.h" typedef struct{ u8 win_cnt; u8 judge; u8 hand; }DispStatus; static DispStatus st_disp; #define IS_VAL(x) ((x)?true:false) void disp_DrawWinCount(void); void disp_DrawJudge(void); void disp_DrawHand(void); //--------------------------------------------------------------------------------- void Disp_Clear(void){ //--------------------------------------------------------------------------------- memset(&st_disp, 0, sizeof(st_disp)); disp_DrawWinCount(); disp_DrawJudge(); disp_DrawHand(); } //--------------------------------------------------------------------------------- void Disp_SetWinCount(u8 win_cnt){ //--------------------------------------------------------------------------------- st_disp.win_cnt = win_cnt & 0x3e; disp_DrawWinCount(); } //--------------------------------------------------------------------------------- void disp_DrawWinCount(void){ //--------------------------------------------------------------------------------- printf("\x01b[9;0HDISP_WIN_CNT\n" " 2 4 8 16 32\n"); printf(" %2d", IS_VAL(st_disp.win_cnt & 2));//win_cnt_1 printf(" %2d", IS_VAL(st_disp.win_cnt & 4));//win_cnt_2 printf(" %2d", IS_VAL(st_disp.win_cnt & 8));//win_cnt_3 printf(" %2d", IS_VAL(st_disp.win_cnt & 16));//win_cnt_4 printf(" %2d", IS_VAL(st_disp.win_cnt & 32));//win_cnt_5 } //--------------------------------------------------------------------------------- void Disp_SetJudge(u8 judge){ //--------------------------------------------------------------------------------- st_disp.judge = judge & 0x07; disp_DrawJudge(); } //--------------------------------------------------------------------------------- void disp_DrawJudge(void){ //--------------------------------------------------------------------------------- printf("\x01b[13;0HDISP_JUDGE\n" " MAKE AIKO KACHI\n"); printf(" %5d", IS_VAL(st_disp.judge & 1));//JANKEN_MAKE printf(" %5d", IS_VAL(st_disp.judge & 2));//JANKEN_AIKO printf(" %5d", IS_VAL(st_disp.judge & 4));//JANKEN_KACHI } //--------------------------------------------------------------------------------- void Disp_SetHand(u8 hand){ //--------------------------------------------------------------------------------- st_disp.hand = hand & 0x07; disp_DrawHand(); } //--------------------------------------------------------------------------------- void disp_DrawHand(void){ //--------------------------------------------------------------------------------- printf("\x01b[17;0HDISP_HAND\n"); printf("\x01b[2K\r"); if(st_disp.hand & 1){ printf("GOO"); } if(st_disp.hand & 2){ printf("CHO"); } if(st_disp.hand & 4){ printf("PAR"); } } //---------------------------------------------------------------------------------