DXライブラリを色々いじってみている。
とりあえずラスタースクロールみたいの。
実行ファイルはこちら。
ソースは以下。
三角関数テーブルを作って、1ラインずつ座標をずらして表示しているだけ。
#include "DxLib.h" #include "math.h" int count=0; char Key[256]; void wait_fanc(){ int term; static int t=0; term = GetNowCount()-t; if(16-term>0) Sleep(16-term); t=GetNowCount(); return; } void fps(){ int i; static int t=0,ave=0,f[60]; f[count%60]=GetNowCount()-t; t=GetNowCount(); if(count%60==59){ ave=0; for(i=0;i<60;i++) ave+=f[i]; ave/=60; } if(ave!=0){ DrawFormatString(0, 0,GetColor(255,255,255),"%.1fFPS",1000.0/(double)ave); DrawFormatString(0,20,GetColor(255,255,255),"%dms" ,ave); } return; } // WinMain 関数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; // ウインドウモードに変更 //サイン、コサインテーブル作成 float fsin[360],fcos[360]; int i; int j; int sinpuku = 0; //振幅 int sinpuku_max = 200;//振幅の最大 int plus = 6; //増分 int speed = 4; //速さ for(i=0;i<360;i++) { fsin[i]=(float)sin(i*3.1415926535/180); fcos[i]=(float)cos(i*3.1415926535/180); } int Graph ; int seed ; //三角関数の種 // DXライブラリの初期化 if( DxLib_Init() == -1 ) return -1 ; // グラフィックのロード Graph = LoadGraph( "bg01.png" ) ; // グラフィックを画面座標(100,100)に // 透過色処理あり、反転処理なしで描画 while( CheckHitKeyAll() == 0 ) { for(j=0;j<360;j+=speed) { sinpuku += plus; // 画面を初期化 SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定 ClearDrawScreen() ; for(i=0;i<480;i++) { // メッセージループに代わる処理をする if( ProcessMessage() == -1 ) { break ; // エラーが起きたらループを抜ける } seed = (i+j) % 360; if (fcos[seed]<0) { DrawRectGraph( 0, i, -fcos[seed]*sinpuku, i, 640+(fcos[seed]*sinpuku), 1, Graph, TRUE, FALSE ) ; } if(fcos[seed]>=0) { DrawRectGraph( fcos[seed]*sinpuku, i, 0, i, 640-(fcos[seed]*sinpuku), 1, Graph, TRUE, FALSE ) ; } } fps(); count++; ScreenFlip(); } if (sinpuku>sinpuku_max || sinpuku<0) { plus = -plus; } } // ここでキー入力を待つ // WaitKey() ; // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; }