#include "DxLib.h"
#include <math.h>
#define PI 3.141592
#define MIN_ANGLE (PI/3*2) //ここです。
#define MAX_ANGLE (PI/3*7) //ここです。
#define ADD_SPEED (PI/220) //ここです。
#define SUB_SPEED (PI/180) //ここです。
double angle;
char Key[256];
void calc_angle(){
if(Key[KEY_INPUT_Z]!=0){ //ここです。
if(angle<MAX_ANGLE){ //ここです。
angle+=ADD_SPEED-ADD_SPEED*(0.97*(angle-MIN_ANGLE)/(MAX_ANGLE-MIN_ANGLE)); //ここです。
if(angle>=MAX_ANGLE) //ここです。
angle-=ADD_SPEED*3; //ここです。
}
}
else{
if(angle>MIN_ANGLE){ //ここです。
angle-=SUB_SPEED; //ここです。
if(angle<MIN_ANGLE) //ここです。
angle=MIN_ANGLE; //ここです。
}
}
}
#define BUNKATU 30 //ここです。
void meter_graph(){
int i;
double ang=MIN_ANGLE; //ここです。
for(i=0;i<=BUNKATU;i++){ //ここです。
DrawLine(320+210*cos(ang),280+210*sin(ang),320+180*cos(ang),280+180*sin(ang),GetColor(255,0,0)); //ここです。
ang+=(MAX_ANGLE-MIN_ANGLE)/BUNKATU; //ここです。
}
}
void graph(){
DrawLine(320,280,320+200*cos(angle),280+200*sin(angle),GetColor(255,255,255)); //ここです。
DrawFormatString(300-70,380,GetColor(0,255,255),"%5.1fkm/h",(angle-MIN_ANGLE)*57.6); //ここです。
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
angle=MIN_ANGLE;
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK );
SetFontSize(36);
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && Key[KEY_INPUT_ESCAPE]==0){
calc_angle();
meter_graph();
graph();
ScreenFlip();
}
DxLib_End();
return 0;
}
私は、高校2年生で現在DXライブラリに興味を持っている女子です。
学校では、C言語を軽く教わった程度なので、DXライブラリの簡単なプログラムなら理解することがわかるのですが
何か短くて簡単なプログラムで動いているゲームがないかと思い、
見つけたのがこのスピードメーターです。
これはサンプルプログラムの館で見つけました。
このプログラムなら短くて教えてもらえばわかるんじゃないかな?と思って、ここで質問させてもらいました。
私がわからないのは、 「//ここです。」と書いてある部分です。
特にわからないのが針の計算とメーターの表示の仕方の計算です。
自分で理解しようと本家にいって調べてましたが計算が全然理解できませんでした。
なのでこれを私にわかりやすく解説してもらえませんか?
できるなら、「//ここです。」と書いてあるところを詳しくお願いします。><