PlayLoud!!

Since1997

ラスタースクロール

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 ;
}