キャラの往復
Re: キャラの往復
適切なコードを書き、コンパイル(アセンブルとリンクを含む)し、実行すればいいです。
キャラクターの絵を描き、適切なパスにファイルとして保存することも必要かもしれません。
キャラクターの絵を描き、適切なパスにファイルとして保存することも必要かもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: キャラの往復
座標と移動ベクトル変数で情報を保持。壁に接近したら、壁から離れる方向に移動ベクトルのXかYを反転します。
これで往復するはずです。
これで往復するはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: キャラの往復
softyaさんが仰る通りのサンプルプログラムを書いてみました。
実行結果
[youtube][/youtube]
どうでしょうか?
vは速さ、angは角度です。
sin,cosの使い方はこの辺で紹介しています。
http://dixq.net/g/h_06.html
#define _USE_MATH_DEFINES
#include "DxLib.h"
#include <math.h>
#define W 640
#define H 480
class Player {
double x, y, v, ang;
public:
Player() { x = 320, y = 240, v = 5, ang = 0; }
void update() {
if (!(0<=x && x<W)) {
ang += M_PI;
}
x += cos(ang)*v;
y += sin(ang)*v;
}
void draw() {
DrawCircle((int)x, (int)y, 10, GetColor(255, 255, 255), TRUE);
}
};
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
Player p;
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
p.update();
p.draw();
}
DxLib_End();
return 0;
}
[youtube][/youtube]
どうでしょうか?
vは速さ、angは角度です。
sin,cosの使い方はこの辺で紹介しています。
http://dixq.net/g/h_06.html