|
|
2007/8/1(Wed) 11:47:01|NO.10002
screen 0,500,500
a=250
b=250
c=0
d=5
cls 1
*ii
repeat
redraw 1
color 219,219,255
boxf 10,10,490,490
color 0,0,0
pos 100,100
mes"○"
pos a,b
mes"●"
stick key, 15 ;キー入力
if key & 1 : a=a-d ;左
if key & 2 : b=b-d ;上
if key & 4 : a=a+d ;右
if key & 8 : b=b+d ;下
if key & 128 : end ;[Esc]
if a=100 :goto *kuku
*kukukuku
if a <= 10 : a=10
if a >= 475 : a=475
if b <= 10 : b=10
if b >= 475 : b=475
await 60
loop
*kuku
if b=100:goto *kukuku
goto *kukukuku
*kukuku
wait 2
cls
mes"クリアー "
stop
これに敵とかつけたい
んですけど
どすれば
いいですか
|
|
2007/8/1(Wed) 11:52:19|NO.10004
まあ、今度はヒントだけ・・・。
まず、自分と同じ動きにしたいなら、自分の動きと同じように敵の動きを作れ!!
その質問の仕方だと他にどんな敵の動きや攻撃の仕方が分からない。
|
|
2007/8/1(Wed) 11:55:31|NO.10005
>その質問の仕方だと他にどんな敵の動きや攻撃の仕方が分からない。
敵 △▲▽▼∴∵の6種
攻撃法 ぶつかる負けそのかわり動く
=かわすゲーム
|
|
2007/8/1(Wed) 12:00:37|NO.10006
>攻撃法 ぶつかる負けそのかわり動く
左から右へか上から下へなどの直線なのか、
ボールが反射するように動くのか、などなど・・・がよく分からない。
その動きを具体的に教えてください。
|
|
2007/8/1(Wed) 12:07:28|NO.10007
反射するかんじですね
|
|
2007/8/1(Wed) 12:11:52|NO.10008
ならば、ボールが反射するソースを応用すればいいと思います。
↓これがボールの反射するやつ。
siz=20
x=0
y=0
sx=1
sy=1
move=5
*main
redraw 0
color 255,255,255
boxf
color
circle x,y,x+siz,y+siz
if x!limit(x,0,ginfo_winx-siz) :x=limit(x,0,ginfo_winx-siz) :sx*=-1
if y!limit(y,0,ginfo_winy-siz) :y=limit(y,0,ginfo_winy-siz) :sy*=-1
x+sx*move
y+sy*move
redraw
wait 1
goto *main
|
|
2007/8/1(Wed) 18:43:38|NO.10020
意味不
|
|
2007/8/1(Wed) 18:49:52|NO.10021
何が意味不明なんですか?
具体的に書いてください。
変数の意味が分からないなら、変数の意味を教えてあげます。
x,y :ボールの座標
sx,sy :ボールの方向
move :ボールの移動量
siz :ボールのサイズ
limitなどの命令が分からないなら、ヘルプで調べてみてください。
|
|
2007/8/1(Wed) 18:51:43|NO.10022
if x!limit(x,0,ginfo_winx-siz) :x=limit(x,0,ginfo_winx-siz) :sx*=-1
が意味不
|
|
2007/8/1(Wed) 18:54:14|NO.10023
その判定ですか・・・。
それは
if x<=0 :x=0 :sx*=-1
if x>=ginfo_winx-siz :x=ginfo_winx-siz :sx*=-1
と同じ意味になります。
|
|
2007/8/1(Wed) 19:01:54|NO.10025
二個にしたい
|
|
2007/8/1(Wed) 19:04:00|NO.10026
何にも調べる気のない奴に教えるなんて無駄。
調子に乗るだけだから、放置したほうがいいと思うが?
|
|
2007/8/1(Wed) 19:06:11|NO.10027
配列変数を使ってみてください。
↓これは、さっきのボールのやつの配列を使ったやつ。
siz=20
dim x,2
dim y,2
dim sx,2
dim sy,2
repeat 2
x(cnt)=rnd(ginfo_winx-siz)
y(cnt)=rnd(ginfo_winy-siz)
sx(cnt)=1
sy(cnt)=1
loop
move=5
*main
redraw 0
color 255,255,255
boxf
color
repeat 2
circle x(cnt),y(cnt),x(cnt)+siz,y(cnt)+siz
if x(cnt)!limit(x(cnt),0,ginfo_winx-siz) :x(cnt)=limit(x(cnt),0,ginfo_winx-siz) :sx(cnt)*=-1
if y(cnt)!limit(y(cnt),0,ginfo_winy-siz) :y(cnt)=limit(y(cnt),0,ginfo_winy-siz) :sy(cnt)*=-1
x(cnt)+sx(cnt)*move
y(cnt)+sy(cnt)*move
loop
redraw
wait 1
goto *main
|
|
2007/8/1(Wed) 19:10:03|NO.10028
>配列変数を使ってみてください。
なにそれ
|
|
2007/8/1(Wed) 19:14:52|NO.10029
重なるとゲームオーバーってどうやるの
|
|
2007/8/1(Wed) 19:23:41|NO.10030
検索って日本語知ってるか?
|
|
2007/8/1(Wed) 19:28:18|NO.10031
>配列変数
一度はgoogleで調べてみたら? ↓
http://www.google.co.jp/search?hl=ja&rlz=1T4SUNA_ja___JP223&q=HSP+%E9%85%8D%E5%88%97%E5%A4%89%E6%95%B0%E3%80%80dim+&lr=
>重なるとゲームオーバーってどうやるの
両方から判定を行って、座標が重なったらゲームオーバーにするようにすればいいとおもいます。
siz=20
dim tx,100 //配列変数100個
dim ty,100
x=0
y=0
foreach tx
tx(cnt)=rnd(ginfo_winx-siz) //位置を設定する
ty(cnt)=rnd(ginfo_winy-siz)
loop
*main
redraw 0
color 255,255,255
boxf
color
foreach tx //foreach txはrepeat length(tx)と同じ。
circle tx(cnt),ty(cnt),tx(cnt)+siz,ty(cnt)+siz//描画する
if tx(cnt)=x & ty(cnt)=y :dialog "ゲームオーバー" :stop //ここで重なっているかの判定をする
loop
stick sk,15
if sk&1 :x-2
if sk&2 :y-2
if sk&4 :x+2
if sk&8 :y+2
color 255
circle x,y,x+siz,y+siz,0
redraw
wait 1
goto *main
|
|
2007/8/1(Wed) 19:31:13|NO.10032
ありがとございやす
〜
|
|