#define SIZE 20			;キャラクタのサイズ
#define dy0_max 20		;押しっぱなしの時の最大初速度
#define ROUGH 1			;ROUGH は”荒い”の英語。これの場合は1のみ(^^;
#define dx 5			;X方向の移動量

	buffer 2 : cls
	;picload "haikei.bmp"	;背景画像を使用する場合はブッファーにも読み込む

	screen 0,640,480,0,0,0
	;picload "haikei.bmp"	;画像の読み込み

	x=winx/2 : y=winy-SIZE	;初期位置
	y0=y

	jp=0			; 状態フラグ= -1:落下中 0:ジャンプしてない 1:上昇中
*main
	await 1
	stick kari,31
	if jp=0 : if kari&16 : dy0+ : if dy0<=dy0_max : goto *main	;ジャンプをしていないとき
									;ジャンプの高さをカウント
	if jp=0 : if dy0!=0 : jp=1 : dy=-dy0		;ジャンプのフラグをたてる

	if kari&1 : x=x0-((x>0)*dx)		;ここの計算は解説参照
	if kari&4 : x=x0+((x<(winx-SIZE))*dx)	;ここの計算は解説参照

	y=y0+dy					;Y座標を変化させる
	gosub *hyouji				;表示
	await 30				;表示の時間を長くするためになるべくここがいいと思う

	x0=x : y0=y				;今の位置を記憶(描画消去のため)
	if dy=dy0 : dy=0 : dy0=0 : jp=0 : goto *main	;初速度と同じになったら、ジャンプ終了
	if jp!=0 : dy+=ROUGH : 			;ジャンプしているとき以外、変化量を変化させる(解説参照)
	if jp=1 : if dy=0 : jp=-1 : dy=dy-GROUGH*-1		;最高点に達したら、jpフラグを落下にする
goto *main

*hyouji
	if (x0=x)&(y0=y) : return			;前と同じ位置なら表示はしない

	a=csrx : b=csry
	pos x0,y0 : gcopy 2,x0,y0,SIZE+1,SIZE+1		;前の場所を書き直す
	pos a,b
	color 0,0,0
	boxf x,y,x+SIZE,y+SIZE				;キャラクターの表示
	return
ほとんどコメントに書いてあるので、何とかなると思います
基本的考え方は、”同じ高さでジャンプさせる”のほうに書いてあります。 こちらで考えるのは、ジャンプし始めの高さ(初速度?)を決めると言うだけです。 ただ、実行してみると判るのですが、高いジャンプの時は、一瞬止まります(^^; いくら考えても、この方法しか思い浮かばないので・・・ つまり、どれだけの時間、ボタンを押していたのかどうか。これを測定するのに時間がかかってしまうわけです。 そのため、最大の初速度を大きくすると、ジャンプが高くなりますが そのぶん、反応が悪くなります。
なにか、他にいい方法がある場合は、ヒントだけでももらえるとうれしいです(^^;
■ 目次へ戻る ■

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル