|
|
|
2011/3/7(Mon) 19:16:15|NO.37479
いきなりですが質問させていただきます。
りんごの画像があって
でてくるところはランダムだー
・・・ってやりたいのですが、どうしても左端からでてしまいます。
あと、『変数 林檎y1>200』になったときにまたリンゴが出てくるようにしたいのですが
一回しか出てきません(´・ω;`)どうすればいいでしょうか
screen 0,400,200
現在のステージ=1
*たぶん重要な変数調整
自機x=200
タイム=1500*現在のステージ
*今宵のステージ
ステージ=現在のステージ
*main
repeat
await
x=0 : y=0 : りんご=rnd(10)
redraw 2
randomize
if タイム=0:gosub *ゲームオーバー
color 255,255,255:boxf : color
pos 0,0:picload "背景.bmp",1
pos 自機x,150:picload "かご.gif",1
pos 0,0:font "S2G殴り書き",20:color 255,0,0:mes "ステージ "+ステージ
pos 150,0:font "S2G殴り書き",20:color 255,0,255:mes "残り時間 "+タイム
if 自機x>0 :getkey x,37
if 自機x<368:getkey y,39
if x=1:自機x-3
if y=1:自機x+3
if りんご=rnd(10):gosub *sub
if 一号室=1:pos 林檎x1,林檎y1:picload "りんご1.gif",1
if 二号室=1:pos 林檎x2,林檎y2:picload "りんご2.gif",1
if 三号室=1:pos 林檎x3,林檎y3:picload "りんご3.gif",1
if 林檎y1>200:一号室=0
if 林檎y2>200:二号室=0
if 林檎y3>200:三号室=0
redraw 1
タイム-1
林檎y1+1
林檎y2+2
林檎y3+3
wait 1
loop
*ゲームオーバー
dialog "ゲームオーバー、やりなおしますか?",2,"(^q^)"
if stat=6:goto *たぶん重要な変数調整
if stat=7:end
*sub
if 一号室=0:goto *一号室入室
if 二号室=0:goto *二号室入室
if 三号室=0:goto *三号室入室
return
*一号室入室
randomize
林檎1y=rnd(80)
林檎1x=rnd(401)
一号室=1
return
*二号室入室
randomize
林檎2y=rnd(80)
林檎2x=rnd(401)
二号室=1
return
*三号室入室
randomize
林檎3y=rnd(80)
林檎3x=rnd(401)
三号室=1
return
PS.タイトルが『自作ゲームを作ろうとしてるがうまくできないので質問。』ってなってるのは
あれです、そう、この先も質問するかも知れないからです。
| |
|
2011/3/7(Mon) 19:23:03|NO.37480
変数名が途中で
林檎x1から林檎1x
林檎y1から林檎1y
林檎x2から林檎2x
林檎y2から林檎2y
林檎x3から林檎3x
林檎y3から林檎3y
に切り替わってるからです。
|
|
2011/3/7(Mon) 19:48:28|NO.37481
てれてれさんありがとうございます!
そんな初歩的なことを見逃してしまったとは・・・orz
|
|
2011/3/7(Mon) 20:06:25|NO.37482
はみ出てしまうのは林檎1x〜林檎3xに乱数をセットしている部分でrnd(401)にしていて
リンゴの画像の幅をスクリーンの幅から引いていないのが原因です。
|
|
2011/3/7(Mon) 20:12:26|NO.37483
リンゴが途中でワープする・・だと・・!?
リンゴが現れる→落ちていく→変な場所にワープする!?
リンゴをワープさせなくするためには
どうすればいいのでしょうか><
screen 0,400,200
現在のステージ=1
*たぶん重要な変数調整
自機x=200
タイム=1500*現在のステージ
*今宵のステージ
ステージ=現在のステージ
*main
repeat
await
x=0 : y=0 : りんご=rnd(10)
redraw 2
randomize
if タイム=0:gosub *ゲームオーバー
color 255,255,255:boxf : color
pos 0,0:picload "背景.bmp",1
pos 自機x,150:picload "かご.gif",1
pos 0,0:font "",20:color 255,0,0:mes "ステージ "+ステージ //フォントはいつかきめるw
pos 150,0:font "",20:color 255,0,255:mes "残り時間 "+タイム //フヒヒwwサーセンww
if 自機x>0 :getkey x,37
if 自機x<368:getkey y,39
if x=1:自機x-3
if y=1:自機x+3
if りんご=5:gosub *sub
if 一号室=1:pos 林檎x1,林檎y1:picload "りんご1.gif",1
if 二号室=1:pos 林檎x2,林檎y2:picload "りんご2.gif",1
if 三号室=1:pos 林檎x3,林檎y3:picload "りんご3.gif",1
if 林檎y1>200:一号室=0
if 林檎y2>200:二号室=0
if 林檎y3>200:三号室=0
redraw
タイム-1
林檎y1+1
林檎y2+2
林檎y3+3
wait 1
loop
*ゲームオーバー
dialog "ゲームオーバー、やりなおしますか?",2,"あなたは負け犬"
if stat=6:goto *たぶん重要な変数調整
if stat=7:end
*sub
if 一号室=0:goto *一号室入室
if 二号室=0:goto *二号室入室
if 三号室=0:goto *三号室入室
return
*一号室入室
randomize
林檎y1=0
林檎x1=rnd(401)
一号室=1
return
*二号室入室
randomize
林檎y2=0
林檎x1=rnd(401)
二号室=1
return
*三号室入室
randomize
林檎y3=0
林檎x3=rnd(401)
三号室=1
return
| |
|
2011/3/7(Mon) 20:14:19|NO.37484
hexa.hemiさんありがとうございます!
最初の質問の原因が気になりすぎて
気づきませんでした!
|
|
2011/3/7(Mon) 20:57:35|NO.37485
このようにソースはインデントすると見やすいので『必ず』やること。
screen 0,400,200
現在のステージ=1
*たぶん重要な変数調整
自機x=200
タイム=1500*現在のステージ
*今宵のステージ
ステージ=現在のステージ
*main
repeat
await
x=0 : y=0 : りんご=rnd(10)
redraw 2
randomize
if タイム=0:gosub *ゲームオーバー
color 255,255,255:boxf : color
pos 0,0:picload "背景.bmp",1
pos 自機x,150:picload "かご.gif",1
pos 0,0:font "",20:color 255,0,0:mes "ステージ "+ステージ //フォントはいつかきめるw
pos 150,0:font "",20:color 255,0,255:mes "残り時間 "+タイム //フヒヒwwサーセンww
if 自機x>0 :getkey x,37
if 自機x<368:getkey y,39
if x=1:自機x-3
if y=1:自機x+3
if りんご=5:gosub *sub
if 一号室=1:pos 林檎x1,林檎y1:picload "りんご1.gif",1
if 二号室=1:pos 林檎x2,林檎y2:picload "りんご2.gif",1
if 三号室=1:pos 林檎x3,林檎y3:picload "りんご3.gif",1
if 林檎y1>200:一号室=0
if 林檎y2>200:二号室=0
if 林檎y3>200:三号室=0
redraw
タイム-1
林檎y1+1
林檎y2+2
林檎y3+3
wait 1
loop
*ゲームオーバー
dialog "ゲームオーバー、やりなおしますか?",2,"あなたは負け犬"
if stat=6:goto *たぶん重要な変数調整
if stat=7:end
*sub
if 一号室=0:goto *一号室入室
if 二号室=0:goto *二号室入室
if 三号室=0:goto *三号室入室
return
*一号室入室
randomize
林檎y1=0
林檎x1=rnd(401)
一号室=1
return
*二号室入室
randomize
林檎y2=0
林檎x1=rnd(401)
二号室=1
return
*三号室入室
randomize
林檎y3=0
林檎x3=rnd(401)
三号室=1
return
ループの中で何回もrandomizeを呼ぶ意味は基本的にないので、スクリプトの頭で一回呼べばよし。
*gosubした先で*gotoしてそこでreturnなんつー流れは通常ないので改めるべし。
repeat〜loop間を抜けるには必ずbreakしてやる必要があるが、これではゲームオーバーになったとき
*gosubでゲームオーバーの処理をした後returnもbreakもせずに頭に戻って別のrepeatを始めてしまう。
gosubやrepeatのヘルプとサンプルを3万回ほど見直した後、きちんと流れの把握から始めんさい。
| |
|
2011/3/12(Sat) 16:49:44|NO.37550
ORZさんありがとうございます!とてもスプリクトが見やすくなりました!
|
|
2011/3/12(Sat) 19:31:59|NO.37552
*main
repeat〜loop
*ゲームオーバー
を変更して
*main
goto *main
ゲームオーバー
にすると良いよ。
|
|
2011/3/27(Sun) 13:52:09|NO.37912
・・・すべての質問が解決しますた・・・
|
|