[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
269
(1): 名前は開発中のものです。 [sage] 04/07/06 21:30 ID:Oq4N2t0v(1) AAS
>>268
高一だけどもう習ったよ
270
(1): 名前は開発中のものです。 [sage] 04/07/06 21:32 ID:tJWPmmxn(1) AAS
とりあえず初速度を三角関数でxとyに分解した後、
重力加速度をyに対して適用していきましょう。

しかし初速29000m/sだと、軽々地球を離脱して重力圏外に吹っ飛んでいきそうです。
271
(1): 名前は開発中のものです。 [sage] 04/07/06 21:37 ID:jam3e6md(1) AAS
地球の半径は6370kmぐらいでいいですか?
272: HSPが初プログラム@生徒希望 [sage] 04/07/06 22:03 ID:GhTVD8Z+(1/2) AAS
>>242
242(1): x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/04 20:47 ID:WDudAYFD(5/5) AAS
あ、インデントかけるの忘れとった。。。

; 素数判定 with HSP 単純版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
repeat ,2
    n = cnt
    repeat cnt-2, 2
        if n \ cnt = 0: n = 0: break
    loop
    if n{
        noteadd ""+cnt
        i++
        if i >= 1000: break
        await
    }
loop
objprm 0, log
title "素数判定"
stop
> if n{
このnって何の意味があるんですか?

それから>>241
241(2): x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/04 20:45 ID:WDudAYFD(4/5) AAS
; 素数判定 with HSP 少しだけ高速版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
log = "2": n = 1
repeat 999
repeat
n += 2: f = 1
repeat n>>1-1,3
if n \ cnt = 0: f = 0: break
continue cnt+2
loop
if f: break
loop
noteadd ""+n
await
loop
objprm 0, log
title "素数判定"
stop
にある「>>」の使い方がわかりません…
273: HSPが初プログラム@生徒希望 [sage] 04/07/06 22:06 ID:GhTVD8Z+(2/2) AAS
連レス済みません

HSPでの平方根の出すのと、その整数か否かの判断てできますか?
できれば、教えてください。

質問ばっかで済みません
274
(2): x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/06 23:17 ID:BOq5Vq10(4/4) AAS
>>269
ガ━━(゚Д゚;)━━━ン!!
物理じゃなくて化学だし・・・

>>270
何をすればいいのか全くわからそ( ´・ω・`)

>>271
ループを抜けるときにn = 0にされていたら(割り切れたときにn = 0にして抜けている)無視、
されていない(素数)のとき、いろいろしてる。

>>はビットシフト。2進数が関わってきます。
で、結果的には
x >> nは、xを2のn乗で割るのと同じ。
x << nは、xに2のn乗をかけるのと同じ。
だから、n>>1
1(8): 名前は開発中のものです。 [] 04/06/10 18:05 ID:VshiFFV8(1/2) AAS
ゲームに必要な要素を先生が出してくれます

その課題をクリアしていく講習会です
はn/2と同じ。

平方根も求められるには求められるけど、自分で求めるアルゴリズムは用意しないといけない。
その整数か否かとは・・・?
275
(1): 名前は開発中のものです。 [sage] 04/07/06 23:53 ID:pkSoPn0/(5/5) AAS
//HSPヘルプではincludeするのはhspext.hsになってますがhspext.asじゃないと動きません
//なぜ?(´・ω・`)
//
//平方根の求め方
//
//HSP2.61で動作確認しますた
//
#include "hspext.as"
//100の平方根を求めます
i=100
//iの平方根を固定少数点型でjに代入
emsqr j,i
//jの値を整数型にキャスト(少数点以下切り捨て)
j=j>>4
4(10): 受験生 ◆3VUXqvbfSY [age] 04/06/10 23:09 ID:aWWFz+nO(1) AAS
言語が解んなきゃ、出しようがないが…

C++ > ウィンドウを作ってみましょう。
VS.NET +VB > ビットマップでも読んでみましょう。
JAVA > …微妙…
//jを表示
print j
stop
276: 名前は開発中のものです。 [] 04/07/07 04:08 ID:FL+3iUiB(1) AAS
これであってるのかな
よくわからんので実行しても合ってるのか確認しようがない(´・ω・`)
ググった式をそのまま当てはめてみました

弾道シミュレーション
外部リンク[zip]:gamdev.org
277
(1): HSPが初プログラム@生徒希望 [sage] 04/07/07 21:29 ID:dX/NBYiw(1) AAS
>>274
返答有難う御座います。
学校で考えてたら、平方根だけじゃダメだとわかったんで、
>>233
233(1): 名前は開発中のものです。 [sage] 04/07/04 11:13 ID:dw9vgL9Y(1/2) AAS
>>232
自分以下で2以上の全ての整数の割り算の余りが0にならなければ素数
別の解放にエラトステネスのふるいってのがあるけど別に使わなくていい
にあった2以上〜自分未満ってのをやってみようと思います。

因みに整数か否かとは、平方根出したときのことです。
例えば√2は1.414…ですよね?だから整数じゃないですし、√4なら2ですから整数で、
整数じゃなかったら素数に入れよう!とか思ってたんですが、
11*13(適当に思いついた)だとダメなんですよね…
278: 名前は開発中のものです。 [sage] 04/07/07 21:32 ID:W6JVsWwD(1) AAS
ゲームに必要なのは実現できるか否かだ
ちょっぱやな素数判定できることに課題としての価値はないよ
ガンガレ
279: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/07 22:18 ID:lBWiEqny(1/2) AAS
√27 = 5.1961...
27 = 3 * 9
280
(1): C / HSPの生徒 orz [sage] 04/07/07 23:08 ID:B0lUGdqJ(1) AAS
>>275
> HSPヘルプではincludeするのはhspext.hsになってますがhspext.asじゃないと動きません
HSPヘルプは電波入っているから気にしないがよし。
つかhspソースファイルの拡張子は".as"以外使わないと思うが。

>>274
>267
267(1): 4 ◆3VUXqvbfSY [] 04/07/06 20:22 ID:sRW7wZ6D(1) AAS
>>266
なるわけありませんw

だだし、解らない方をホっといて課題を進める訳には…

うーん…

じゃあ、課題外伝でも出しますか…
余力が有ればどうぞ。

弾道シミュレーション:とは言え、何も波動方程式を使えとはいわない。
真空空間で結構。
画面を横を640kmと仮定し、初速、角度を入力させ、弾の軌道を描いてくれ。
ちなみに、初速は29000m/s以下で
重力加速度は10m/(s^2)でお願いします。
を簡単に表現すると、
   __
 /   \           /
〇     〇←B.止まる A/) 角度 R

A.初速<29000m/s

こんな感じの軌道を描画する。
で、真空中なのでX軸方向の速度は 初速 * cosR
Y軸は 初速 * sinR で、毎秒-10していく。
281
(1): x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/07 23:51 ID:lBWiEqny(2/2) AAS
>>280
#include "hspext.as"
screen 2, 300, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input speed, 215, 25: pos 270, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input angle, 210, 25: pos 265, 38: mes "/255"
pos 5, 70: objsize 290, 25: button "Start", *start
gsel 0: stop
*start
emsin sin, angle: emsin cos, angle
mx = speed * sin / 255: my = speed * cos / 255
x = 0: y = 480000: pos x/1000, y/1000
repeat
x += mx: y -= my: my -= 10
line x / 1000, y / 1000
wait 10
loop
stop

こんな感じかぇ・・・?
282: C / HSPの生徒 orz [sage] 04/07/08 14:31 ID:oFd7+xVG(1/2) AAS
>>281
sin と cos が逆だけど、だいたいOKじゃないか?
俺も281参考に一応作ってみた。
…なんでcos7がマイナスになるんだ、理解できん。

#include "hspext.as"
#define EDIT_X 160
#define EDIT_Y 24
#define G 10
#define SCREEN_X 640
#define SCREEN_Y 480
width SCREEN_X, SCREEN_Y
title "C / HSPの生徒 orz"
color 200, 200, 200:boxf
pos 120, 70:button "描画", *ready
goto config_sub
283: C / HSPの生徒 orz [sage] 04/07/08 14:31 ID:oFd7+xVG(2/2) AAS
*ready
color 200, 200, 200:boxf
if v0 > 29000:stop
uchar_r = r \ 360 * 255 / 360
color 240
emsin sin, uchar_r:emcos cos, uchar_r
vx = -v0 * cos / 255:vy = -v0 * sin / 255
x = 0:y = SCREEN_Y:pos x, y
repeat
x += vx:y += vy:vy += G
line x, y
if (y > SCREEN_Y) || (x < 0) || (x > SCREEN_X):break
await 0
loop
*config_sub
color
pos 40, 15:mes "初速 :":pos 100, 10:input v0, EDIT_X, EDIT_Y
pos 40, 45:mes "角度 :":pos 100, 40:input r, EDIT_X, EDIT_Y
stop
284: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/08 17:42 ID:gJH4XEvh(1/2) AAS
おっと、emcosがemsinになってたか・・・
285
(4): 名前は開発中のものです。 [sage] 04/07/08 17:45 ID:f5vo4Z1w(1) AAS
なんていうかさ。素数よりも、もっと普通にゲームでよく使うようなやつを
やったほうがいいんじゃないかな?

ボールが跳ねるのをシミュレート、とかなら
ジャンプするゲームでは確実に使うだろうし。
286
(2): 4 ◆3VUXqvbfSY [] 04/07/08 19:00 ID:xmAVGw0W(1) AAS
なんか…確かに素数ばっかりに見えますが…違うんですよ。
素数で詰まってる人が多いってだけで…

あとですね…ボールが跳ね返るシミュレーション、ジャンプに使いますかねぇ?
マリオが勝手に地面で跳ね返ったら、俺は切れますがw

…ああ、何時になったらインベーダーが…本来なら、そろそろ、赤い四角に弾でも撃って貰おうと思ってたんですが…

わかりました。二つ出します

メイン課題 前の、赤い四角に弾を撃って貰います。さらに前課題の降ってくる物体と相殺させて下さい。
弾丸は横2ドット、縦16ドットで黄緑色
動きは Y座標(初期値は赤い四角のY座標+16)その後Y--; X座標(初期値は赤い四角のX座標÷2)その後固定;
当たった時点もしくは、画面外にでたら再発射が可能となる。
基本一発。ただし、複数発実装できるならしても良い。

課題外伝 ボールの跳ね返りシミュ
ボールを(0,0)から水平投射する。(速度は自由)
床の反発係数は0.8
壁は1.0
重力加速度は10m/s^2
287: 名前は開発中のものです。 [sage] 04/07/08 20:05 ID:kembbGf8(1) AAS
トランポリンでも使うつもりなんですかね
ジャンプで跳ね返りって…
そいやマリオには敵ふんだときちょっと浮くけどあれなのかな・・・
288: 名前は開発中のものです。 [sage] 04/07/08 21:00 ID:gJH4XEvh(2/2) AAS
名古屋撃ちのために、実装しない方向で行こう。。。

>>286
こんな感じでOK?

#include "hspext.as"
screen 2, 300, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input speed, 215, 25: pos 270, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input angle, 210, 25: pos 265, 38: mes "/255"
pos 5, 70: objsize 290, 25: button "Start", *start
gsel 0: stop
*start
cls
emsin sin, angle: emcos cos, angle
mx = speed * sin / 255: my = speed * cos / 255
x = 320000: y = 240000: pos x/1000, y/1000
repeat
x += mx: y -= my: my -= 10
if x<0: x=0: mx = -mx
if x>640000: x=640000: mx = -mx
if y>480000: y=480000: my = -my * 8 / 10: if my<80: my = 0: stop
line x / 1000, y / 1000
wait 1
loop
stop
289
(1): 名前は開発中のものです。 [sage] 04/07/08 23:33 ID:UCn/khb4(1) AAS
#include "hspext.as"
#const G 10
#const Coeff 10
#const Wall_e 10
#const Floor_e 8

screen 0, 640, 480, 1
dim sin,256 :dim cos,256
repeat 256 :emsin sin.cnt,cnt :emcos cos.cnt,cnt :loop

screen 2, 150, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input V, 50, 25: pos 100, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input C, 50, 25: pos 100, 38: mes "°"
pos 5, 70: objsize 120, 25: button "Start", *main
gsel 0 :stop
*main
if V > 29000 : 29000
if C > 90 : C = 90
C = C * 256 / 360 :Vx = V :Vy = V :Ycnt = 0 :x = 0 :y = 0

repeat
redraw 0 :await 1
color 255,255,255 :boxf :color 255,0,0 :pos 0, 460 : mes "■" :color 0,0,255 :line 0, 475, 640, 475
color 0,0,0 :x += Vx * (-cos.C) / 256 :y += Vy * sin.C / 256 - (G * Ycnt)

if x / 1000 < 0 :Vx = -Vx * Wall_e / Coeff :x = 0
if x / 1000 > 624 :Vx = -Vx * Wall_e / Coeff :x = 624000
Ycnt++ :if y < 0 :Vy = Vy * Floor_e / Coeff :y = 0 :Ycnt = 0
pos x / 1000, -y / 1000 + 460 : mes "○" :if cnt > 0 & (Vy <= 0) :break
redraw 1 :loop :stop
投下
290: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/07/09 00:10 ID:bufBX0Vb(1) AAS
#include "hspext.as"
screen 2, 300, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input speed, 215, 25: pos 270, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input angle, 210, 25: pos 265, 38: mes "/255"
pos 5, 70: objsize 290, 25: button "Start", *start
gsel 0: stop
*start
cls
emsin sin, angle: emcos cos, angle
mx = speed * sin / 255: my = speed * cos / 255
x = 320000: y = 240000: pos x/1000, y/1000
repeat
ox = x: oy = y: x += mx: y -= my: my -= 10
if x<0: x=0: mx = -mx
if x>624000: x=624000: mx = -mx
if y>464000: y=464000: mx = mx * 8 / 10: my = -my * 8 / 10: if my<80|(mx==0): my = 0: stop
;redraw 0
color 255, 255, 255: pos ox/1000, oy/1000: mes "○"
color 0, 0, 0: pos x/1000, y/1000: mes "○"
;redraw 1
wait 1
loop
stop

改造版。

>>289
スゲー・・・
291: C / HSPの生徒 orz [sage] 04/07/09 10:25 ID:nlM8j7wC(1) AAS
>>286の課題作ってみたが、ゲーム性を考えて数値をアレンジしています。
#define RED_SIZE 32
#define ENEMY_SIZE 32
#define MOVE_TIME 32
#define OBJ_SX 2
#define OBJ_SY 16
#define OBJ_SPEED 16
randomize
width 640, 480
red_x = 640 - RED_SIZE / 2:red_y = 480 - RED_SIZE
repeat
redraw 2:color 255, 255, 255:boxf
if enemy_stat = 0:enemy_y = -ENEMY_SIZE:enemy_stat = 1:title "C / HSPの生徒 orz 撃破数: "+obj_cnt
enemy_timer++:if enemy_timer > MOVE_TIME:enemy_timer = 0
if enemy_timer = 0:rnd enemy_x, 640 - ENEMY_SIZE
stick key, 15:if key & 1{red_x-4}if key & 4{red_x+4}
stick key, 16:if key = 16 & (obj_stat = 0){
obj_stat = 1:obj_x = RED_SIZE / 2 - (OBJ_SX / 2) + red_x:obj_y = red_y - 16}
if (enemy_x < obj_x) & (obj_x + OBJ_SX < (enemy_x + ENEMY_SIZE)) {
if (enemy_y < obj_y) & (obj_y + OBJ_SY < (enemy_y + ENEMY_SIZE)) {
obj_cnt++:obj_stat = 0:enemy_stat = 0:color 255, 0, 0:boxf} }if obj_y + OBJ_SY < 0:obj_stat = 0
if enemy_stat:color 100, 100, 200:boxf enemy_x, enemy_y, enemy_x + ENEMY_SIZE, enemy_y + ENEMY_SIZE
color 200, 100, 100:boxf red_x, red_y, red_x + RED_SIZE, red_y + RED_SIZE
if obj_stat:color 100, 200, 100:boxf obj_x, obj_y, obj_x + OBJ_SX, obj_y + OBJ_SY:obj_y-OBJ_SPEED
enemy_y++:if enemy_y > 480{enemy_stat = 0}await 20:redraw 1
loop
292: 285 [sage] 04/07/09 10:46 ID:mw4kM0V8(1/2) AAS
すまん、言葉足らずだった。
ジャンプの軌道の加速減速だ。

ボールが跳ねるって部分は蛇足だったな。
293: 285 [sage] 04/07/09 10:48 ID:mw4kM0V8(2/2) AAS
>ボールが跳ねるって部分は蛇足だったな。

>ボールが跳ねるって言い方は変だったな。

言葉足らずって言うより、俺、言い回しが変だね。
1-
あと 494 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s