int Draw(Screen *screen){// メイン描画処理 ClsDrawScreen(); //printfDx("テスト1\n"); DrawScene(screen);//ステージを描画させる ScreenFlip(); return DRAW_SUCCESS; }
void sort(int bl[],int x){ int tmp;//一時 int cmp=0,swp=0;//比較、交換 int i, j;//ループ用 for(i=0;i<x;i++){//x=20 for(j=0;j<(x-1)-i;j++){ SetDrawScreen(DX_SCREEN_BACK); // 描画先を裏画面へ ClsDrawScreen(); //裏画面消去 cmp++;//比較+1 if(bl[j]>bl[j+1]){ swp++;//交換+1 tmp =bl[j]; bl[j]=bl[j+1]; bl[j+1]=tmp; } showHeader(cmp, swp);//ヘッダー表示 showGraph(bl, ARRAY_SIZE, j);//表示 //_sleep(10); ScreenFlip(); // 裏画面を表画面へ } } /////////////////////////////////////////////// }
//********************************************************* // ゲームメイン処理 //********************************************************* void GameMain(void) { ClsDrawScreen(); // 背景 DrawBox(0, 0, WIN_W, WIN_H, WHITE, TRUE); //文字(会話)設定----------------------------- // 描画する文字列の文字セットを変更 ChangeFont("07やさしさゴシック"); //文字サイズ SetFontSize(20); //-------------------------------------------- //コミットテスト用の表示 DrawFormatString(100, 100, BLACK, "やさしさゴシックフォントで表示TEST"); ScreenFlip(); }
int WindowMode() { #define CMOVE 90 #define TIP 200 #define END 200 + CMOVE int CursorX; int CursorY; int Graph; int CursorGraph; //キー関係------- int Key; int BeforeInput; int UpInput; int DownInput; //-------------- CursorX = 100; CursorY = TIP; Graph = LoadGraph("graphic/WindowMode.png"); CursorGraph = LoadGraph("graphic/handicon.png"); SetDrawScreen(DX_SCREEN_BACK); while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0) { BeforeInput = Key; Key = GetJoypadInputState(DX_INPUT_KEY_PAD1); UpInput = ~Key & BeforeInput; DownInput = Key & ~BeforeInput; ClsDrawScreen(); DrawGraph(0, 0, Graph, TRUE); DrawGraph(CursorX, CursorY, CursorGraph, TRUE); if(DownInput & PAD_INPUT_DOWN) { PlayEffect(SelectSound); CursorY += CMOVE; } if(DownInput & PAD_INPUT_UP) { PlayEffect(SelectSound); CursorY -= CMOVE; } if(CursorY < TIP) { CursorY = TIP; } if(CursorY > END) { CursorY = END; } if(CursorY==TIP && DownInput & PAD_INPUT_A) { PlayEffect(EnterSound); ChangeWindowMode(FALSE); return Title(); } if(CursorY==END && DownInput & PAD_INPUT_A) { PlayEffect(EnterSound); ChangeWindowMode(TRUE); return Title(); } ScreenFlip(); } }
int Tutorial(void) { int Color; int MovingGraph;//操作方法グラフィック int PItemExplainGraph;//プラスアイテム説明グラフィック int MItemExplainGraph;//マイナスアイテム説明グラフィック int GameGraph;//ゲーム画面説明グラフィック int WordBeforeGameGraph;//ゲーム画面前文字グラフィック int GameRuleGraph;//ゲームグラフィック説明グラフィック int ScoreExGraph; //スコア計算方法説明グラフィック int PageUpSound; //ページ進み音 int PageDownSound; //ページ戻り音 //キー関係------- int Key; int BeforeInput; int UpInput; int DownInput; //-------------- int tutorialcounter;//ゲーム画面の出す順 Color = GetColor(255,255,255); MovingGraph = LoadGraph("graphic/moving.png"); PItemExplainGraph = LoadGraph("graphic/ItemExplain(Plus).png"); MItemExplainGraph = LoadGraph("graphic/ItemExplain(Minus).png"); GameGraph = LoadGraph("graphic/GameScreen.png"); WordBeforeGameGraph = LoadGraph("graphic/GameExplain(Word).png"); GameRuleGraph = LoadGraph("graphic/GameRule.png"); ScoreExGraph = LoadGraph("graphic/Score.png"); PageUpSound = LoadSoundMem("sound/pageup.wav"); PageDownSound = LoadSoundMem("sound/pagedown.wav"); tutorialcounter = 0; SetDrawScreen(DX_SCREEN_BACK); while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0) { BeforeInput = Key; Key = GetJoypadInputState(DX_INPUT_KEY_PAD1); UpInput = ~Key & BeforeInput; DownInput = Key & ~BeforeInput; ClsDrawScreen(); if(DownInput & PAD_INPUT_A) { tutorialcounter++; PlayEffect(PageUpSound); WaitTimer(50); } if(DownInput & PAD_INPUT_B) { tutorialcounter--; PlayEffect(PageDownSound); WaitTimer(50); } if(tutorialcounter < 0) { PlayEffect(CancelSound); StopEffect(TitleMusic); Title(); } if(tutorialcounter > 6) { StopEffect(TitleMusic); Title(); } switch(tutorialcounter) { case 0: { DrawGraph(0, 0, MovingGraph, TRUE); break; } case 1: { DrawGraph(0, 0, WordBeforeGameGraph, TRUE); break; } case 2: { DrawGraph(0, 0,GameGraph, TRUE); break; } case 3: { DrawGraph(0, 0,ScoreExGraph, TRUE); break; } case 4: { DrawGraph(0, 0,PItemExplainGraph, TRUE); break; } case 5: { DrawGraph(0, 0,MItemExplainGraph, TRUE); break; } case 6: { DrawGraph(0, 0,GameRuleGraph, TRUE); break; } } ScreenFlip(); } }
int LevelSelect() { #define CMOVE 214 #define LEVEL_TIP 3 #define LEVEL_END 431 #define MENU_X 2 #define MENU_Y 380 int Color; int SelectGraph; int CursorGraph; int CursorX; int CursorY; Color = GetColor(0,0,0); CursorGraph = LoadGraph("graphic/LevelSelect_C.png"); SelectGraph = LoadGraph("graphic/LevelSelect.png"); CursorX = MENU_X; CursorY = 61; SetDrawScreen(DX_SCREEN_BACK); while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { int Key; int BeforeInput; int UpInput; int DownInput; BeforeInput = Key; Key = GetJoypadInputState(DX_INPUT_KEY_PAD1); UpInput = ~Key & BeforeInput; DownInput = Key & ~BeforeInput; ClsDrawScreen(); DrawGraph(0, 0, SelectGraph, TRUE); DrawGraph(CursorX, CursorY, CursorGraph, TRUE); if(DownInput & PAD_INPUT_B) { PlayEffect(CancelSound); StopEffect(LevelSelectMusic); Title(); } if(DownInput & PAD_INPUT_LEFT) { CursorX -= CMOVE; PlayEffect(SelectSound); } if(DownInput & PAD_INPUT_RIGHT) { CursorX += CMOVE; PlayEffect(SelectSound); } if(CursorX == LEVEL_TIP) { if(DownInput & PAD_INPUT_A) { PlayEffect(EnterSound); StopEffect(LevelSelectMusic); LevelEasy(); ActMain(); return 0; } } if(CursorX == LEVEL_TIP + CMOVE) { if(DownInput & PAD_INPUT_A) { PlayEffect(EnterSound); StopEffect(LevelSelectMusic); LevelNormal(); ActMain(); return 0; } } if(CursorX == LEVEL_TIP + CMOVE*2) { if(DownInput & PAD_INPUT_A) { PlayEffect(EnterSound); StopEffect(LevelSelectMusic); LevelHard(); ActMain(); return 0; } } if(CursorX < LEVEL_TIP) { CursorX = LEVEL_TIP; } if(CursorX > LEVEL_END) { CursorX = LEVEL_END; } ScreenFlip(); } }
int Title() { #define WORD_SIZE 20 #define CMOVE 40 #define TITLE_TIP 350 #define TITLE_END TITLE_TIP + CMOVE * 2 int TitleGraph; //タイトルグラフィックハンドル int CursorGraph; //カーソルグラフィックハンドル int TutorialGraph[9]; int Color; //キー関係------- int Key; int BeforeInput; int UpInput; int DownInput; //-------------- int CursorX; int CursorY; TitleMusic = LoadSoundMem("sound/Title.ogg");//タイトルBGM LevelSelectMusic = LoadSoundMem("sound/levelselect.ogg"); EnterSound = LoadSoundMem("sound/decide.wav"); SelectSound = LoadSoundMem("sound/select.wav"); CancelSound = LoadSoundMem("sound/cancel.wav"); TitleGraph = LoadGraph("graphic/Title.png"); CursorGraph = LoadGraph("graphic/handicon.png"); LoadDivGraph("graphic/chip.png", 10, 2, 5, 32, 32, TutorialGraph); Color = GetColor(0, 0, 0); SetFontSize(WORD_SIZE); //カーソル位置の初期化 CursorX = 165; CursorY = TITLE_TIP; SetDrawScreen(DX_SCREEN_BACK); PlayEffectLoop(TitleMusic); while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE) ==0) { ClsDrawScreen(); BeforeInput = Key; Key = GetJoypadInputState(DX_INPUT_KEY_PAD1); UpInput = ~Key & BeforeInput; DownInput = Key & ~BeforeInput; if(DownInput & PAD_INPUT_UP) { CursorY -= CMOVE; PlayEffect(SelectSound); } if(DownInput & PAD_INPUT_DOWN) { CursorY += CMOVE; PlayEffect(SelectSound); } if(CursorY<=TITLE_TIP) { CursorY = TITLE_TIP; if(DownInput & PAD_INPUT_A) { StopEffect(TitleMusic); PlayEffect(EnterSound); PlayEffectLoop(LevelSelectMusic); LevelSelect(); return 0; } } if(CursorY == TITLE_TIP + CMOVE) { if(DownInput & PAD_INPUT_A) { PlayEffect(EnterSound); return Tutorial(); } } if(CursorY>=TITLE_END) { CursorY = TITLE_END; if(DownInput & PAD_INPUT_A) { StopEffect(TitleMusic); exit(0); } } DrawGraph(0, 0, TitleGraph, TRUE); DrawGraph(CursorX, CursorY, CursorGraph, TRUE); //画面の表示 ScreenFlip(); } }
int Main() { int Color; int check_data[] = { 10.0, 15.0, 20, 25, 30, 40, }; PlayerGraph = LoadGraph("human.png"); BallGraph = LoadGraph("0055.png"); BackGraph = LoadGraph(""); Color = GetColor(255, 255, 255); GetGraphSize(PlayerGraph, &PlayerSizeX, &PlayerSizeY); GetGraphSize(BallGraph, &BallSizeX, &BallSizeY); PlayerX = 0; PlayerY = 325; BallX = 0; BallY = 50; Second = 0; Minute = 0; Hour = 0; Index = 0; SetDrawScreen(DX_SCREEN_BACK); while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0) { int Key; Key = GetJoypadInputState(DX_INPUT_KEY_PAD1); playertop = PlayerY ; playerbottom = PlayerY + PlayerSizeY; playerleft = PlayerX ; playerright = PlayerX + PlayerSizeX; balltop = BallY ; ballbottom = BallY + BallSizeY; ballleft = BallX ; ballright = BallX + BallSizeX; ClsDrawScreen(); if(Key & PAD_INPUT_LEFT) { PlayerX -= 4; } if(Key & PAD_INPUT_RIGHT) { PlayerX += 4; } if(PlayerX < LEFT_EDGE) { PlayerX = LEFT_EDGE; } if(PlayerX > RIGHT_EDGE) { PlayerX = RIGHT_EDGE; } BallX += BallVx; BallY += BallVy; if(BallX < LEFT_EDGE) { BallX = LEFT_EDGE; BallVx = -BallVx; } if(BallX > RIGHT_EDGE) { BallX = RIGHT_EDGE; BallVx = -BallVx; } if(BallY > BOTTOM) { BallY = BOTTOM; BallVy = -BallVy; } if(BallY < 0) { BallY = 0; BallVy = -BallVy; } Time(); if(Minute==check_data[Index]) { if(BallVx < 0) { BallVx -= 1; } if(BallVx > 0) { BallVx += 1; } if(BallVy < 0) { BallVy -= 1; } if(BallVy > 0) { BallVy += 1; } Index++; } Temp(); if(playertop < ballbottom && playerbottom > balltop && playerleft < ballright && playerright > ballleft ) { return 0; } //DrawFormatString(50, 50, Color, "Temp; %2f", Temperature); DrawGraph(PlayerX, PlayerY, PlayerGraph, TRUE); DrawGraph(BallX, BallY, BallGraph, TRUE); DrawGraph(0, 0, BackGraph, TRUE); DrawBox(playerleft, playertop, playerright, playerbottom, Color, TRUE); DrawBox(ballleft, balltop, ballright, ballbottom, Color, TRUE); ScreenFlip(); } }
// アクションサンプルプログラムメイン int ActMain(void) { // 描画先を裏画面にセット SetDrawScreen(DX_SCREEN_BACK); // 垂直同期信号を待たない SetWaitVSyncFlag(FALSE); // プレイヤーの座標を初期化 PlX = 320.0F; PlY = 240.0F; // プレイヤーの落下速度を初期化 PlDownSp = 0.0F; // ジャンプ中フラグを倒す PlJumpFlag = FALSE; // 入力状態の初期化 Input = 0; EdgeInput = 0; // 60FPS固定用、時間保存用変数を現在のカウント値にセット FrameStartTime = GetNowCount(); // メインループ開始、ESCキーで外に出る while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {drawPlayer(); // 画面のクリア ClsDrawScreen(); // 1/60秒立つまで待つ while (GetNowCount() - FrameStartTime < 1000 / 60){} // 現在のカウント値を保存 FrameStartTime = GetNowCount(); // 入力状態を更新 { int i; // パッド1とキーボードから入力を得る i = GetJoypadInputState(DX_INPUT_KEY_PAD1); // エッジを取った入力をセット EdgeInput = i & ~Input; // 入力状態の保存 Input = i; } // プレイヤーの移動処理 { float MoveX, MoveY; // 移動量の初期化 MoveX = 0.0F; MoveY = 0.0F; // 左右の移動を見る if ((Input & PAD_INPUT_LEFT) != 0) MoveX -= SPEED; if ((Input & PAD_INPUT_RIGHT) != 0) MoveX += SPEED; // 地に足が着いている場合のみジャンプボタン(ボタン1 or Zキー)を見る if (PlJumpFlag == FALSE && (EdgeInput & PAD_INPUT_A) != 0) { PlDownSp = -JUMP_POWER; PlJumpFlag = TRUE; } // 落下処理 PlDownSp += G; // 落下速度を移動量に加える MoveY = PlDownSp; // 移動量に基づいてキャラクタの座標を移動 CharMove(&PlX, &PlY, &PlDownSp, MoveX, MoveY, CHAR_SIZE, &PlJumpFlag); } drawMap(); // キャラクタの描画 DrawBox((int)(PlX - CHAR_SIZE * 0.5F), (int)(PlY - CHAR_SIZE * 0.5F), (int)(PlX + CHAR_SIZE * 0.5F) + 1, (int)(PlY + CHAR_SIZE * 0.5F) + 1, GetColor(255, 0, 0), TRUE); // 画面の更新 ScreenFlip(); } // 終了 return 0; }