>>1 ありがとうございます。
>>all
急いで更新するので前スレは埋めないで下さい。
>1
乙
4 :
826:2005/04/03(日) 23:52:10 ID:VWwVwp6/
>>1乙!
>>前スレ962
>動かない…orz
最初にマップ画面が表示されるまで、オレの機種でも30秒〜40秒かかるんで、気長に待ってください
(3分以上たってもマップが表示されないとかならどこかに機種依存部分がある可能性大
その時は修正します
前スレ
>>963 全体のだいたいのプランは出来てるみたいですね
喜んで協力させていただきます
5 :
826:2005/04/03(日) 23:55:09 ID:VWwVwp6/
>>前スレ964
>LTM
LT(見渡せる範囲)の最大値(LTのMAXって事で
>マップ作成
>MAP[CHARy]=substr(MAP[CHARy],0,CHARx-1)+" "+substr(MAP[CHARy],CHARx,strlen(MAP[CHARy])-CHARx)
文字列データの一箇所だけ変更する命令が無いので、
データの頭〜キャラのxの1つ前迄の文字数分 + " " + キャラのxの1つ後〜最後迄の文字数分
みたいな感じです
>「TEST_2」
>text(substr(MAP[CHARy+i],CHARx-1-LT,1+LT*2),64-12*LT,79+12*i)
MAPを一行ずつ格納したMAP[]から、
キャラのxのLT分前〜1+LT*2個分
の文字列を呼び出して表示させてます
substr関数で存在しない場所を呼び出そうとするとエラーになるので
LTMの分だけマップの端に"#"を追加してます
6 :
826:2005/04/03(日) 23:56:01 ID:VWwVwp6/
>>前スレ965
substr(MAP[Y],X,1)=0
↓
MAP[Y]= substr(MAP[Y],0,x-1) + "0" +substr(MAP[Y],x+1,strlen(MAP[Y],x+1))
これで解るかな(汗
あと数字使った場合、「文字」としてではなく「数値」として扱われてしまう事があるので注意が必要
例
"001"→"1"
"111"+"1"→「112」
7 :
826:2005/04/04(月) 00:06:01 ID:px99hjIq
>>6 間違った・・・
×
MAP[Y]= substr(MAP[Y],0,x-1) + "0" +substr(MAP[Y],x+1,strlen(MAP[Y],x+1))
○
MAP[Y]= substr(MAP[Y],0,x-1) + "0" +substr(MAP[Y],x+1,strlen(MAP[Y])-(x+1))
正直オレも訳解らなくなる事があるのでorz
>>7 また間違ったよorz
なにやってんだオレは・・・
×
MAP[Y]= substr(MAP[Y],0,x-1) + "0" +substr(MAP[Y],x+1,strlen(MAP[Y])-(x+1))
○
MAP[Y]= substr(MAP[Y],0,x) + "0" +substr(MAP[Y],x+1,strlen(MAP[Y])-(x+1))
>>前スレ963
半分しか表示されないってのはおそらく「*」と「#」が半角に化けてるんじゃないかと
*#←これが半角で表示されてたら化けてます
クラシックだったら設定で全角表示をON
iMOMAだったら圧縮設定で変わったような・・・
>826氏
半角だったから駄目だったのかorz
てか半角から全角に変えたって変えてあったね。何度写しなおしても駄目だから全然進まなかったよ。
ところで826氏はなんかこうしたいとかアイデアある?
for Ds= 0 to 80
if input(0) and keyselect then goto"bb" endif
sleep(65)
A=abs(rand)%6+1
color(255,255,255)
frect(0,0,240,240)
color(50,160,50)
setfont("S")
text(A,0,126)
next
label b
color(55,255,255)
frect(0,0,240,240)
color(0,55,255)
text("アタリ",0,126)
input()
label B
input()
label bb
if A=2 then t=1 endif
if t=1 then goto"b" endif
これなんですが…
アタリが表示されると、input()の効力が無くなってしまいます
どうすればいいんでしょうか?
>826氏
また質問なんだけど、例えば旧MAP[5][5]に"M"をいれたいときはどうかけばよいの?
substr(MAP[5],5,1)="M"
MAP[y]の文字列の5番目の文字はM、てやんのかなと思ったらならなかったよorz
もう一度基礎から勉強しよう
>>10 input()の効力が無くなったのではなく、
携帯BASICの仕様で「for〜next」の間で「goto」使った場合強制終了
>>11 >また質問なんだけど、例えば旧MAP[5][5]に"M"をいれたいときはどうかけばよいの?
MAP[5] = substr(MAP[5],0,5-1) + "M" + substr(MAP[5],5,strlen(MAP[5])-5)
面倒くさいけど、これでOK
(因にsubstrでの場所指定は0から始まる
アイデアは今の所は特にないです(アイデアとか考えるのはあまり得意な方では・・・
13 :
13:2005/04/04(月) 06:12:05 ID:INY8+xTq
俺もわかりやすくつけたほうがよいかな
>12
結構メンドいのね。
アイデアは例えば夜になるとモンスターは寝ちゃうとか、昼間は閉まってる道具屋とか、思いついたらヨロ^^
一緒に、てもなかなかどう分担してよいのかよくわかんないねf^^;いっそモンスターの部分任せちゃおっかなw
M[X座標][Y座標][0]=名前
M[X座標][Y座標][1]=HP
M[X座標][Y座標][2]=攻撃力
M[X座標][Y座標][2][3]=命中率
M[X座標][Y座標][2][4]=防御力
M[X座標][Y座標][2][5]=回避率
ちなみにこんな風に配列でモンスターステータス決めると効率悪いかな?
AIでロボットを戦わせる的なプログラム
「RBSYS」
H=height/2 W=width/2 origin(H,W) soft2("exit") for i=-1 to 1 step 2 x[i]=rand%(W-10) y[i]=rand%(H-10) H[i]=3 next
label 0
lock() clear(-W,-H,W*2,H*2) for i=-1 to 1 step 2 color(0,100+(i*100),100+(i*100)) if i=-1 then #1p# else #2p# endif
farc(x[i]-5,y[i]-5,10,10) line(x[i],y[i],x[i]+10*cos(r[i])/100,y[i]+10*sin(r[i])/100)
if scan=keysoft2 then exit elseif ae[i]=1 then gosub "fa" endif clearinput() if H[i]=0 then goto 1 endif
next
T=T+1 text("1P:"+H[-1]+" 2P:"+H[1]+" TIME:"+T/10,-W,12-H) unlock(0)
goto 0 exit #RBFNC#
「RBFNC」
label inx
if x[i]<W-10 then x[i]=x[i]+2 endif return
label dex
if x[i]>10-W then x[i]=x[i]-2 endif return
label iny
if y[i]<H-10 then y[i]=y[i]+2 endif return
label dey
if y[i]>10-H then y[i]=y[i]-2 endif return
label inr
r[i]=r[i]+5 if r[i]>360 then r[i]=r[i]-360 endif return
label der
r[i]=r[i]-5 if r[i]<0 then r[i]=r[i]+360 endif return
label fire
if ae[i]=0 then ae[i]=1 axp[i]=5*cos(r[i])/100 ayp[i]=5*sin(r[i])/100 ax[i]=x[i] ay[i]=y[i] endif return
label fa line(ax[i],ay[i],ax[i]+axp[i],ay[i]+ayp[i]) ax[i]=ax[i]+axp[i] ay[i]=ay[i]+ayp[i]
if abs(ax[i]-x[-i])<8 and abs(ay[i]-y[-i])<8 then H[-i]=H[-i]-1 ae[i]=0 endif
if ax[i]>W or ax[i]<-W or ay[i]>H or ay[i]<-H then ae[i]=0 endif return
label 1
unlock(0) if i=-1 then txt="2p" else txt="1p" endif text(txt+" win!!",-W,24-H) input()
「1p」
if scan=key1 then gosub "inr" endif
if scan=key2 then gosub "dey" endif
if scan=key3 then gosub "der" endif
if scan=key4 then gosub "dex" endif
if scan=key5 then gosub "fire" endif
if scan=key6 then gosub "inx" endif
if scan=key8 then gosub "iny" endif
「2p」
if (y[i]-y[-i])>30 then gosub "dey" endif
if (y[i]-y[-i])>0 then e=0 endif
if (y[i]-y[-i])<-30 then gosub "iny" endif
if (y[i]-y[-i])<0 then e=1 endif
if (x[i]-x[-i])>2 then gosub "dex"
endif
if (x[i]-x[-i])<-2 then gosub "inx" endif
if r[i]<>90 and e=1 then gosub "der" endif
if e=0 and r[i]<>270 then gosub "inr" endif
if abs(x[i]-x[-i])<10 and abs(y[i]-y[-i])<100 then gosub "fire" endif
んで、AI作るときの条件。
1p、2pのところを書き替える。1pは現在実験用につくったマニュアル操作プログラムが書いている
直接変数に値を代入せずサブルーチン呼び出しで変更(不正防止のため)
自分、相手の情報の引き出しにのみ変数使用可能。
自分情報は「変数[i]」、相手情報は「変数[-i]」に代入されてありこれは1p2pどちらに書いても変わらない。
使用可能変数(取出のみ)
x軸位置…x[i] x[-i]
y軸位置…y[i] y[-i]
砲角度…r[i] r[-i]
残り体力…H[i] H[-i]
経過時間…t
使用可能サブルーチン
x軸増減…inx、dex
y軸増減…iny、dey
砲角度増減…inr、der
砲発射…fire
基本は自分情報と相手情報でifかけてルーチン呼出になるかな。作るのはかなり難しい
QVGA機で作成したが一応非QVGAでも動くようには作ってある。が、処理重いかもしれない。
チープな出来だけど、まぁ結構いじれるのでは?
なんかJAVAでロボットプログラムして戦わせる大会があったから思いついて書いてみた。
最後に
>>1乙
rem 累計電卓デモ
label setu
a[1] = 50
a[2] = 100
a[3] = 200
a[4] = 300
a[5] = 400
a[6] = 500
a[7] = 1000
a[8] = 2000
a[9] = 3000
a[10] = 5000
xx = 100
xy = 100
gosub "cl"
↑続き
label main
im = input()
if im = 2 then mo[1] = 1 endif
if im = 4 then mo[2] = 1 endif
if im = 8 then mo[3] = 1 endif
if im = 16 then mo[4] = 1 endif
if im = 32 then mo[5] = 1 endif
if im = 64 then mo[6] = 1 endif
if im = 128 then mo[7] = 1 endif
if im = 256 then mo[8] = 1 endif
if im = 512 then mo[9] = 1 endif
if im = 1 then mo[10] = 1 endif
if im = 1024 then gosub "cl" endif
if im = 65536 then gosub "kei" endif
if im = 2048 then exit endif
clearinput()
im = 0
goto "main"
↑続き
label cl
for x = 1 to 10
mo[x] = 0
next
return
label kei
for x = 1 to 10
if mo[x] = 1 then kk = kk + a[x] endif
next
text("計算結果",xx,xy-16)
text(kk,xx,xy)
for x = 1 to 500
next
kk = 0
clear(xx,xy-34,48,36)
return
※連投、失礼しました。前スレからロムってまつw
一番重要なことを…orz
}1 乙です
プログラム}数字キー:フラグOn。F:合計を求める。*:フラグクリア。#:終了
・・・だと思った(ぉ
23 :
0.02:2005/04/04(月) 10:56:06 ID:iY/j0tab
>>6 (826)
strlenの使い方が全然解らなかったんで
かなりありがたいッス。激thx
ちなみに俺もローグライク動かなかったんだけど
少し待ったら映りましたorz
かなりイイ出来ですね。ちとプログラム複雑そうなんで手伝えないけど(´・ω・`)
ローグライク楽しみ。
>>14 AIリアルタイム対戦キタ━━━(゚∀゚)━━━!!!
ジレンマと株の人?とりあえず乙です
今から動かしてみます
>>19 計算機?とは違うのかな…とりあえず動かしてみる
>>1 >>まとめサイトの人
乙です
前スレがまだ100レスもいってない(半分DAT落ちしてた)頃からずっといたけど、まさかこんなに栄えると思わなかったよ。
Tabris氏を始めBASICアプリを作ってくれた人達に感謝せねば。
25 :
0.02:2005/04/04(月) 11:16:52 ID:iY/j0tab
label d
soft2("QUIT")PT=0
PX[1]=4PX[2]=34PX[3]=64PX[4]=4PX[5]=34PX[6]=64PX[7]=4PX[8]=34PX[9]=64
PY[1]=4PY[2]=4PY[3]=4PY[4]=34PY[5]=34PY[6]=34PY[7]=64PY[8]=64PY[9]=64
frect(0,0,width,height)color(250,250,250)origin(2,2)rect(0,0,93,93)for x=3to 63step 30fory=3to 63step 30rect(x,y,27,27)next next
for C=1to 9n=abs(rand)%2MAP[C]=n next gosub"j"
label k i=input()if i and key1 then C=1gosub"c"C=2gosub"c"C=4gosub"c"
elseif i and key2 then C=2gosub"c"C=1gosub"c"C=3gosub"c"C=5gosub"c"
elseif i and key3 then C=3gosub"c"C=2gosub"c"C=6gosub"c"
elseif i and key4 then C=4gosub"c"C=1gosub"c"C=5gosub"c"C=7gosub"c"
elseif i and key5 then C=5gosub"c"C=2gosub"c"C=4gosub"c"C=6gosub"c"C=8gosub"c"
elseif i and key6 then C=6gosub"c"C=3gosub"c"C=5gosub"c"C=9gosub"c"
elseif i and key7 then C=7gosub"c"C=4gosub"c"C=8gosub"c"
elseif i and key8 then C=8gosub"c"C=5gosub"c"C=7gosub"c"C=9gosub"c"
elseif i and keysoft2 then exit
endif C=0
label j
lock()for C=1to 9if MAP[C]=1then color(100,250,150)frect(PX[C],PY[C],23,23)PT=PT+1
elseif MAP[C]=0then color(0,0,0)frect(PX[C],PY[C],23,23)endif next unlock(1)
if PT=9then color(250,250,0)text("CLEAR!",31,115)clearinput()input()exit else PT=0endif goto"k"
label c if MAP[C]=0then MAP[C]=1elseif MAP[C]=1then MAP[C]=0endif return
26 :
0.02:2005/04/04(月) 11:21:26 ID:iY/j0tab
「ライトアウツ」
数字キー1〜9で操作。
ソフトキー2で終了。
昔懐かしい(?)ライツアウトゲームです。
押した所とそれの上下左右に隣接するマスの色が反転します。
全てを緑ライトにすればクリア。
暇潰しにはいいと思います。問題は自動生成なので何回もやってみてください。
}23
どちらかというと、レジスタ?に近いかと(仕様で…orzzz)
一応、使い方のチウトリアルw;
1 → F = 計算結果50
2 → F = 計算結果150(50+100)
6 → F = 計算結果650(150+500)
* = クリアした。
F = 計算結果0(初期値)
2 → 6 → 8 → F = 計算結果2600(100+500+2000)
9 → 4 → F = 計算結果5900(2600+3000+300)
F = 計算結果5900(変更なし)
# = プログラム終了。選択に戻る
・数値入力インターフェースはできてるから、組み込むだけだな。
セーブが、変数1個というのは痛いがw;
http://ruikei-p.seesaa.net/
28 :
10:2005/04/04(月) 12:32:38 ID:LcsS7voc
for next 抜かしてもダメでした。誰か助けてくださいm(__)m
29 :
13:2005/04/04(月) 13:15:15 ID:INY8+xTq
>10
label b
text("アタリ",0,126)
input()
exit
label bb
if t=1 then goto"b" endif
input()
これでいけるはず。
>0.0.2氏
13=ジレンマの中の人。
だからロボットすっごいおもしろそう
label a
im = input(60)
if im = keyselect then goto"bb" endif
sleep(65)
・・・・・
text(A,0,126)
goto "a"
label b
・・・・・
text("アタリ",0,126)
text(x,0,146)
input()
exit
・・・・・
if t=1 then goto"b" endif
x = x + 1
goto "a"
あうっ…被った。スマソ; }29
決定キーを打った回数を追加してみました(最初は24だったorzz
32 :
13:2005/04/04(月) 15:41:19 ID:INY8+xTq
'TEST
soft2("END")
LT=4 LTM=5
CHARx=LTM+abs(rand)%50+1 CHARy=LTM+abs(rand)%50+1
'マップ作成
SHARPS=""
for i=1 to 50+LTM*2
SHARPS=SHARPS+"#"
next
for i=0 to LTM+50 step LTM+50
for j=1 to LTM
MAP[j+i]=SHARPS
next
next
SHARPS=substr(SHARPS,0,LTM)
for i=1+LTM to 50+LTM MAP[i]=SHARPS
for j=1 to 50
R=abs(rand)%100 if R<=80 then MAP[i]=MAP[i]+" " else MAP[i]=MAP[i]+"*" endif
next
MAP[i]=MAP[i]+SHARPS
next
MAP[CHARy]=substr(MAP[CHARy],0,CHARx-1)+" "+substr(MAP[CHARy],CHARx,strlen(MAP[CHARy])-CHARx)
MAPS[1]="<"'洞窟 MAPS[2]="Ψ"'道具屋 MAPS[3]="Ж"'宿屋
for i=1 to 3
RX=abs(rand)%49+6 RY=abs(rand)%49+6 MAP[RY] = substr(MAP[RY],0,RX-1) + MAPS[i] + substr(MAP[RY],RX,strlen(MAP[RY])-RX)
next
'枠書き込み
rect(4,4,132,133)
#TEST_2#
33 :
13:2005/04/04(月) 15:41:59 ID:INY8+xTq
'TEST_2
'メイン
label 0
MCHx=CHARx MCHy=CHARy
yield()
lock()
color(50*LT,50*LT,50*LT) frect(5,5,131,132)
color(250-50*LT,250-50*LT,250-50*LT)
for i=-LT to LT
text(substr(MAP[CHARy+i],CHARx-1-LT,1+LT*2),64-12*LT,79+12*i)
next
text("@",64,79)
unlock(1)
key=input()
if key=keysoft2 then end
elseif key=keyleft then CHARx=CHARx-1
elseif key=keyright then CHARx=CHARx+1
elseif key=keyup then CHARy=CHARy-1
elseif key=keydown then CHARy=CHARy+1
endif
#TEST_3#
#TEST_5#
goto 0
34 :
13:2005/04/04(月) 15:42:34 ID:INY8+xTq
'TEST_3
'移動先チェック
if strat(MAP[CHARy],CHARx-1)="*" or strat(MAP[CHARy],CHARx-1)="#" then CHARx=MCHx CHARy=MCHy
elseif strat(MAP[CHARy],CHARx-1)="M" then
if abs(rand)%10<7 then MAP[CHARy]=substr(MAP[CHARy],0,CHARx-1) + " " + substr(MAP[CHARy],CHARx,strlen(MAP[CHARy])-CHARx)
endif
CHARx=MCHx CHARy=MCHy
else CNT=CNT+1
endif
if CNT%200=199 then TIME=TIME+1 LT=5-TIME%6
endif
35 :
13:2005/04/04(月) 15:43:36 ID:INY8+xTq
'TEST_4
'攻撃チェック
if abs(rand)%10>3 thenMAP[CHARx]=substr(MAP[CHARy],0,CHARx-1) + " " + substr(MAP[CHARy],CHARx,strlen(MAP[CHARy])-MAP[CHARy])
endif
'TEST_5
'モンスター誕生
label BONE
if abs(rand)%2=0 and MCNT<10 then
Mx=LTM+abs(rand)%50+1 My=LTM+abs(rand)%50+1
if substr(MAP[My],Mx,1)=" "then MAP[My] = substr(MAP[My],0,Mx)+ "M" + substr(MAP[My],Mx,strlen(MAP[My])-Mx) MCNT=(MCNT+1)%10
M[MCNT][1]=NAME
M[MCNT][2]=Mx
M[MCNT][3]=My
M[MCNT][4]=10'HP
M[MCNT][5]=1'攻撃力
M[MCNT][6]=1'命中率
M[MCNT][7]=1'防御力
M[MCNT][8]=1'回避率
else goto "BONE"
endif
endif
36 :
13:2005/04/04(月) 15:51:58 ID:INY8+xTq
>826氏
モンスター誕生
2分の1かつMCNTが10より少なく、かつsubstr(MAP[rand_Y],rand_X,1)が" "ならsubstr(MAP[Y],X,1)はモンスター"M"で、M[MCNT][i]にそれぞれ能力値がはいる
発生条件はあとで変えるとして、これであってるかな?
37 :
0.02:2005/04/04(月) 16:13:13 ID:G8nUnLNi
>>29(13氏)
ほうほう、そうでしたか
なかなかローグライクの形が定まって来ましたね
ロボシス研究中です
>>14 ロボシスなかなかイイ…
でも砲頭しか表示されない事が多い;
サイン・コサイン・タンジェントがいまいち理解できてないので
これも講義お願いしたい所デスorz
相手の周囲をぐるぐる回るプログラム作りたい
38 :
14:2005/04/04(月) 17:36:14 ID:zKZ0nQeR
>>37 実は砲頭しか表示していない罠(´・ω・`)
なかなか重いからなるたけ簡略化したらああなった。こだわりたいけど重くなる…
角度→tanだけでtan→角度が出来ないから相手の方向に砲を向けるのに苦労…
39 :
826:2005/04/04(月) 19:06:15 ID:px99hjIq
>>36 ごめん、ロボシス研究してた・・・
これから見てみる(ちょっと時間かかるかも
ロボシスのプログラム
「自動砲台」
if fg=1 then
P=3 mx=(x[-i]-kx)*7+x[-i] my=(y[-i]-ky)*7+y[-i] a=mx-x[i] b=my-y[i]
if r[i]>314 or r[i]<45 then c=tan(r[i])*a/100 if a> 0 and c>b-P and c<b+P then gosub "fire" endif
if c<b then gosub "inr" elseif c>b then gosub "der" endif
elseif r[i]>134 and r[i]<225 then c=tan(r[i])*a/100 if a<0 and c>b-P and c<b+P then gosub "fire" endif
if c<b then gosub "der" elseif c>b then gosub "inr" endif
elseif r[i]>44 and r[i]<135 then c=tan(r[i]+90)*(-b)/100 if b> 0 and c>a-P and c<a+P then gosub "fire" endif
if c>a then gosub "inr" elseif c<a then gosub "der" endif
elseif r[i]>224 and r[i]<315 then c=tan(r[i]+90)*(-b)/100 if b<0 and c>a-P and c<a+P then gosub "fire" endif
if c>a then gosub "der" elseif c<a then gosub "inr" endif
endif
else fg=1
endif
kx=x[-i] ky=y[-i]
頑張ってタンジェント使ってみたけど・・・頭痛くなったorz
rem ダイスころころ
soft1("F:終了")
soft2("四方:Dice")
xy = 10
xx = 00
zb = 20
dice = 6
if dice > 50 then dice = 49 endif
co = 1
setfont("S")
label di
rr = abs(rand)%dice+1
rs = abs(rand)%dice+1
rt = rr + rs
ru = rr * 2
rv = rr * 3
tot = tot + rt
gosub "ms"
↑続き
text(ms,xx,xy)
text("A:",xx,xy+zb)
text(rr,xx+15,xy+zb)
text("B:",xx,xy+(zb*2))
text(rs,xx+15,xy+(zb*2))
text("合計",xx,xy+(zb*3))
text(rt,xx+25,xy+(zb*3))
text("(",xx,xy+(zb*4))
text(ru,xx+10,xy+(zb*4))
text(rv,xx+25,xy+(zb*4))
text(tot/co,xx+40,xy+(zb*4))
text(")",xx+64,xy+(zb*4))
im = input()
gosub "dis"
if co > 299 then exit endif
clearinput()
clear(0,0,100,120)
co = co + 1
goto "di"
↑続き
label ms
ms="ダイス"
if rt = dice*2 then ms="破壊力抜群" endif
if rt = 2 then ms="経験点10点" endif
return
label dis
if im = 65536 then exit endif
if im = 4 then dice = 4 endif
if im = 16 then dice = 8 endif
if im = 32 then dice = 6 endif
if im = 64 then dice = 10 endif
if im = 256 then dice = 20 endif
return
※ 6面体のはずが、長くなっちまった;
}soft2("四方:Dice")
soft2("2468:Dice")
申し訳ないm(_ _;)m
44 :
14:2005/04/04(月) 20:21:26 ID:zKZ0nQeR
>>824氏
うわ…すごい。これほどに作ってくれるとは嬉しいなぁ…
まともな講義出来なくてスマソ。俺もよく分かってないんだ(´・ω・`)
ところで1VS1のモノを作るとき、今回使ったのが
for i=-1 to 1 step 2
で変数を[i][-i]で制御ってなかなか便利だったので報告。
}44
xorじゃダメなんですかね?(って、良く知らないけど;)
ついでだから、ある2進数をビット反転させる技があったら教えて下さいorz
つーか、数値型とか無いから、2進数化させた文字列でもいいけど・・・
>>45 xorでも可能だとは思うけどこっちの方が圧倒的に記述が短いし視認性がいい気がする。
ただこの場合最大1対だから複数使いたい時は不便だな。
ブーリアン型変数がありゃビットまがいのこともできるけど現状はifしかないかも。
別ソースで汎用性をもたせて作っておいて使い回すのが一番楽…かな
ちょいと考えてこよ
47 :
826:2005/04/04(月) 23:11:02 ID:px99hjIq
>>13氏
何かが違う気がしたので改造しました。
(何が違うかは解らないんですが・・・
こうゆう解釈でよかったんだろうか・・・
因にテスト用なんでモンスターはマップ左上に集中して発生するようにしてます。
その他はTIME更新時処理の位置を変えときました
48 :
826:2005/04/04(月) 23:11:45 ID:px99hjIq
'TEST
soft2("END") LT=4 LTM=5 CHARx=LTM+abs(rand)%50+1 CHARy=LTM+abs(rand)%50+1 MCHx=CHARx MCHy=CHARy
'マップ作成
SHARPS=""
for i=1 to 50+LTM*2 SHARPS=SHARPS+"#" next
for i=0 to LTM+50 step LTM+50 for j=1 to LTM MAP[j+i]=SHARPS next next
SHARPS=substr(SHARPS,0,LTM)
for i=1+LTM to 50+LTM MAP[i]=SHARPS
for j=1 to 50
R=abs(rand)%100 if R<=80 then MAP[i]=MAP[i]+" " else MAP[i]=MAP[i]+"*" endif
next
MAP[i]=MAP[i]+SHARPS
next
MAP[CHARy]=substr(MAP[CHARy],0,CHARx-1)+" "+substr(MAP[CHARy],CHARx,strlen(MAP[CHARy])-CHARx)
MAPS[1]="<"'洞窟
MAPS[2]="Ψ"'道具屋
MAPS[3]="Ж"'宿屋
for i=1 to 3
RX=abs(rand)%50+6 RY=abs(rand)%50+6 MAP[RY] = substr(MAP[RY],0,RX-1) + MAPS[i] + substr(MAP[RY],RX,strlen(MAP[RY])-RX)
next
'モンスター作成
for MN=1 to 10
gosub "BONE"
next
'枠書き込み
rect(4,4,132,133)
#TEST_2#
連稿スマソorz
>>45 つまり変数の中身を
0→1
1→0
にしたいのかな?そうだったら、これでどうよ。
a=(a+1)%2
ただ、aは二進数、0か1しか入らないようにプログラムする必要があるけど。
50 :
826:2005/04/04(月) 23:12:44 ID:px99hjIq
'TEST_2
'メイン
label 0
MCHx=CHARx MCHy=CHARy
yield()
lock()
color(50*LT,50*LT,50*LT) frect(5,5,131,132)
color(250-50*LT,250-50*LT,250-50*LT)
for i=-LT to LT
text(substr(MAP[CHARy+i],CHARx-1-LT,1+LT*2),64-12*LT,79+12*i)
next
text("@",64,79)
unlock(1)
key=input()
if key=keysoft2 then end
elseif key=keyleft then CHARx=CHARx-1
elseif key=keyright then CHARx=CHARx+1
elseif key=keyup then CHARy=CHARy-1
elseif key=keydown then CHARy=CHARy+1
endif
#TEST_3#
goto 0
#TEST_A#
51 :
826:2005/04/04(月) 23:16:59 ID:px99hjIq
'TEST_3
'移動先チェック
if strat(MAP[CHARy],CHARx-1)="*" or strat(MAP[CHARy],CHARx-1)="#" then CHARx=MCHx CHARy=MCHy
elseif strat(MAP[CHARy],CHARx-1)="M" then
if abs(rand)%10<7 then MAP[CHARy]=substr(MAP[CHARy],0,CHARx-1) + " " + substr(MAP[CHARy],CHARx,strlen(MAP[CHARy])-CHARx) gosub "GEKIHA"
endif
CHARx=MCHx CHARy=MCHy
else CNT=CNT+1 if CNT%200=199 then TIME=TIME+1 LT=5-TIME%6 endif
endif
52 :
826:2005/04/04(月) 23:17:52 ID:px99hjIq
'TEST_A
'撃破処理サブ
label GEKIHA
MN=MIDX[CHARx][CHARy]
dispose(MIDX[CHARx][CHARy])
gosub "BONE"
return
'モンスター発生サブ
label BONE
for i=0 to 0
Mx=LTM+abs(rand)%6+1
My=LTM+abs(rand)%6+1
if substr(MAP[My],Mx-1,1)=" " and (MCHx<>Mx or MCHy<>My)
then
MAP[My] = substr(MAP[My],0,Mx-1)+ "M" + substr(MAP[My],Mx,strlen(MAP[My])-Mx)
MIDX[Mx][My]=MN
M[MN][1]=NAME
M[MN][2]=Mx
M[MN][3]=My
M[MN][4]=10'HP
M[MN][5]=1'攻撃力
M[MN][6]=1'命中率
M[MN][7]=1'防御力
M[MN][8]=1'回避率
else i=i-1
endif
next
return
プログラム中にアルファベットで名前を変更するようにしたいんですが…
配列で、一文字一文字やっていくしかないのでしょうか?
>>45 ビット反転するなら、すべて1で埋めた数とxorすればいい。
あるいは、その数から引き算でもいいけど。
ようは、
11111111(2) = 255
xor 00101011(2) = 43
----------------
11010100(2) = 212
ということで、ビット反転が成立する、と。
数値に関しては恐らく java.lang.Integer.parseInt(String) あたりで処理されていると思うので、
普通に10進数の文字列だけで考えるのが無難。
2進文字列からだと……ルーチン自作になるかも(^^;
>826氏
ありがとう(T-T)解釈というより俺の書き方が根本的にめちゃくちゃだから。すごい感謝
826氏に一つお願いしてもよいかな。Mの動きをlabel A
今の位置を記憶
for 0からMN
abs(rand)%4
if 0 なら上
elseif 1なら下
elseif 2なら右
elseif 3なら左
else 消える
next
行き先が" "じゃないならgoto A
" "なら元の位置=" "
俺はアイテムとステータスと画面をちとやろうかなと。
お願いしてもよいかな?
}49(14 RBSYS)
}・・・a=(a+1)%2
φ(゜□゜)メモメモ。早速試してみますw
}53
}a=1-a
懐かし〜。これだ…MSXマガジンか何かに載ってたワザはw
}55
}…
} 11111111(2) = 255
}xor 00101011(2) = 43
} ----------------
} 11010100(2) = 212
全て1のマスクで処理…と(ふむふむ)。分かりやすいです〜w
みなさま、ありがとうございましたm(_ _;)m
>>アプリ実用サン
累計デモ計算結果が一瞬しか表示されないから
label kei の clear(xx,xy-34,48,36)を頭に移動させるといいかな
もしくは clearの前にsleep(2000)とか。
key変数を1→key0 2→key1 とかにしないと動かなかったのも報告
改良していけばキーをフルに使った便利ツールができそう。
ところでキー変数って
↑:? ←:? →:? ↓:? 決定:65536
1:2 2:4 3:8 4:16 5:32 6:64 7:128 8:256 9:512
*:1024 0:1 #:2048
ってことなのかな?
この文法がDoCoMoでも通用するように改良して欲しいな…
あと現状のclear(0,0,width,height)をcls()でできるように…
}58
レスありがとうございます。あああ、すみまソン
#一番、重要だったかも?ORZZZ…
上:8192、左:4096、下:16384、右:32768かと(多分)
自機は、ボーダのV603SHです(QVGA)
仕事前なので、激しく急いで打ってる・・・(ぉ
累計デモは、アフター5にscanへ変更する必要があるn(
保管庫の更新まだかな…
'「TEST」
soft2("END") LT=4 LTM=5 CHARx=LTM+abs(rand)%50+1 CHARy=LTM+abs(rand)%50+1 MCHx=CHARx MCHy=CHARy
'マップ作成
SHARPS=""
for i=1 to 50+LTM*2 SHARPS=SHARPS+"#" next
for i=0 to LTM+50 step LTM+50 for j=1 to LTM MAP[j+i]=SHARPS next next
SHARPS=substr(SHARPS,0,LTM)
for i=1+LTM to 50+LTM MAP[i]=SHARPS
for j=1 to 50
R=abs(rand)%100 if R<=80 then MAP[i]=MAP[i]+" " else MAP[i]=MAP[i]+"*" endif
next
MAP[i]=MAP[i]+SHARPS
next
'ショップ等書き込み
MAPS[1]="<"'洞窟
MAPS[2]="Ψ"'道具屋
MAPS[3]="Ж"'宿屋
for i=1 to 3
RX=abs(rand)%50+6 RY=abs(rand)%50+6
x=RX y=RY a=MAPS[i] gosub "KAE"
next
'主人公書き込み
x=CHARx y=CHARy a="@" gosub "KAE"
'モンスター作成
for MN=1 to 10 gosub "BONE" next
'枠書き込み
rect(3,3,133,133)
#TEST_2#
62 :
826:2005/04/05(火) 21:22:22 ID:W3dsm34/
'「TEST_2」
'メイン
label 0
gosub "HYOJI" color(0,0,255) clear(8,138,5,5) frect(3,138,5,5)
MCHx=CHARx MCHy=CHARy
'キー入力処理
label key
key=scan
if key=keysoft2 then end
elseif key=keyleft then CHARx=CHARx-1
elseif key=keyright then CHARx=CHARx+1
elseif key=keyup then CHARy=CHARy-1
elseif key=keydown then CHARy=CHARy+1
else goto "key"
endif
'移動先チェック
if strat(MAP[CHARy],CHARx-1)="*" or strat(MAP[CHARy],CHARx-1)="#" then CHARx=MCHx CHARy=MCHy
elseif strat(MAP[CHARy],CHARx-1)="M" then
if abs(rand)%10<7 then x=CHARx y=CHARy a=" " gosub "KAE" MN=MIDX[CHARx][CHARy] dispose(MIDX[CHARx][CHARy]) gosub "BONE"
endif
CHARx=MCHx CHARy=MCHy
else x=MCHx y=MCHy a=" " gosub "KAE" x=CHARx y=CHARy a="@" gosub "KAE"
endif
gosub "HYOJI" CNT=CNT+1 if CNT%200=199 then TIME=TIME+1 LT=5-TIME%6 endif
#TEST_3#'モンスター行動
goto 0
#TEST_4#'サブ
63 :
826:2005/04/05(火) 21:23:02 ID:W3dsm34/
'「TEST_3」
'モンスター行動
color(255,0,100) clear(3,138,5,5) frect(8,138,5,5)
MN=1
label MMOVE
if M[MN][2]<CHARx-LT or M[MN][2]>CHARx+LT or M[MN][3]<CHARy-LT or M[MN][3]>CHARy+LT then goto "MMOVE3" endif
label MMOVE1
Mx=M[MN][2] My=M[MN][3]
j=abs(rand)%5
if j=0 then My=My-1 elseif j=1 then My=My+1 elseif j=2 then Mx=Mx+1 elseif j=3 then Mx=Mx-1
else x=M[MN][2] y=M[MN][3] a=" " gosub "KAE" gosub "HYOJI" dispose(MIDX[M[MN][2]][M[MN][3]]) gosub "BONE" goto "MMOVE2"
endif
if strat(MAP[My],Mx-1)=" "
then
x=M[MN][2] y=M[MN][3] a=" " gosub "KAE" x=Mx y=My a="M" gosub "KAE"
dispose(MIDX[M[MN][2]][M[MN][3]])
MIDX[Mx][My]=MN
M[MN][2]=Mx M[MN][3]=My
else goto "MMOVE1"
endif
label MMOVE2
gosub "HYOJI"
label MMOVE3
if MN<10 then MN=MN+1 goto "MMOVE" endif
64 :
826:2005/04/05(火) 21:24:19 ID:W3dsm34/
'「TEST_4」
'マップ書き換えサブ
label KAE
MAP[y] = substr(MAP[y],0,x-1)+ a + substr(MAP[y],x,strlen(MAP[y])-x) return
'マップ表示サブ
label HYOJI
yield() lock()
color(50*LT,50*LT,50*LT) frect(4,4,132,132) color(250-50*LT,250-50*LT,250-50*LT)
for i=-LT to LT
text(substr(MAP[CHARy+i],CHARx-1-LT,1+LT*2),65-12*LT,78+12*i)
next
unlock(1) return
'モンスター発生サブ
label BONE
for i=0 to 0
Mx=LTM+abs(rand)%10+1 My=LTM+abs(rand)%10+1
if strat(MAP[My],Mx-1)=" " then
x=Mx y=My a="M" gosub "KAE"
MIDX[Mx][My]=MN
M[MN][1]=NAME
M[MN][2]=Mx
M[MN][3]=My
M[MN][4]=10'HP
M[MN][5]=1'攻撃力
M[MN][6]=1'命中率
M[MN][7]=1'防御力
M[MN][8]=1'回避率
else i=i-1
endif next return
65 :
826:2005/04/05(火) 21:26:01 ID:W3dsm34/
>>56 こんなの出来ますた。
結構重くなってしまったので、画面外のモンスターは移動処理を省くようにしたんですが、
まだちょっと重いかもしれない・・・
細かい所では自分のターンか敵のターンかが分かりやすいようにしてみたり、
KEY入力を連続押し対応に、
あと、表示とマップ書き換えをサブルーチン化してみました
66 :
13:2005/04/05(火) 22:24:51 ID:UuCONOaK
>65
仕事ハヤス。もしかして本職のPGさん?
ありがとう。たしかに10匹同時に動かすと遅くなるだろうけど実際はランダムな場所とタイミングで出現するから大丈夫だと思うけど。Mの動きは最終的には@に向かって、CHARxとCHARyどちらが近いか判断して近い方に動く
CHARx=3
CHARy=2
Mx=5
My=1
''''M
''@''
'''''
なら
X軸差=2:Y軸差=1なのでMy-1。移動先が*ならMx-1。また移動先が*なら今度はMy+1・・みたいに主人公をつけまわそうかなと。問題はMM''@のときMNが右から1,2だと
M'M'@
になっちゃうんだよね。本家はどう処理してるんだろう
俺は今んとこ簡単にrect text ですっげー簡単にTEST版作ってるとこだけど、見える部分は時刻とHPだけにしようかなと。武器は
ITME[1][1]=名前
ITME[1][2]=攻撃力
ITME[1][3]=命中
にしようかなと考えてる。
とにかくダメージ判定を決めちゃえばほぼ一段落だね。826氏ありがとう。俺ほとんどなにもしてないやorz
ダメージ判定先に決めちゃって一段落しちゃおうかな
67 :
13:2005/04/06(水) 00:26:58 ID:JXR0Jel3
攻撃側=ATK[1]'総合攻撃力
攻撃側=ATK[2]'総合命中率
守備側=DEF[1]'総合防御力
攻撃側=ATK[2]'総合回避率
'攻撃判定
R=abs(rand)%10+1
if (攻撃側総合命中率)-(守備側総合回避)>R then
(守備側HP)-(攻撃側総合攻撃力+R)-(守備側総合守備力)
text((攻撃側)+"は殴りかかった")
input()clear(M.WINDO)clear(STAT.WINDO)
text(HP)
if (守備側HP)<1 then
text((守備側)+"は死んだ")
if (守備側)=@ then
text("GAME OVER")
input()end
else (Mx,My)=" "
endif
68 :
13:2005/04/06(水) 00:28:23 ID:JXR0Jel3
ICNT=1
ITME[ICNT][1]="ショートソード"
ITME[ICNT][2]=1'攻撃力
ITME[ICNT][3]=1'命中率
ITME[ICNT][4]=0'攻撃修正
ITME[ICNT][5]=0'命中修正
soft2("END")
label 0
R=150
lock()
color(0,0,0)frect(0,0,240,240)
color(0,0,0)rect(4,4,132,133)
color(R,R,R)frect(5,5,130,131)
color(250,250,250)text("TIME",150,20)text(" HP ",150,35)
A=scan
if A=keysoft2 then exit
elseif A=keypound then'#
color(250,250,250)
text("LV"+"/"+STR,4,160)
text("STR"+"/"+STR,4,175)
text("満腹",4,190)'腹具合が<80なら"満腹",<40なら普通,<20なら空腹,<0なら危険
elseif A=keyast then'アスタリスク
color(0,0,0)frect(0,0,240,240)
color(250,250,250)
for i=0 to ICNT
text(ICNT+"."+ITME[ICNT][1]+"("+ITME[ICNT][2]+","+ITME[ICNT][3]+")("+ITME[ICNT][4]+","+ITME[ICNT][5]+")",4,19)
next
endif
unlock(1)input()goto 0
69 :
13:2005/04/06(水) 00:31:52 ID:JXR0Jel3
攻撃判定は変更の可能性大だけど、全体的な雰囲気は2つ目みたいな感じかなぁ。
取りあえず明日
70 :
0.02:2005/04/06(水) 08:41:32 ID:TMHp/tZE
>>66(13氏)
MM□□@ の処理の件
本家じゃないけど、シレンはたぶんそんな感じ。
少なくともアプリ版やSFC版では列を崩してナナメに動いたりしてた。
71 :
13:2005/04/06(水) 21:08:25 ID:JXR0Jel3
>70
そうだっけ?まぁ近い順から動くか気にしないか、どうにでもなるかな
72 :
826:2005/04/06(水) 22:58:19 ID:9FR90B4f
13氏
>>67を参考にシステム作ってみた・・・
他の所も拡張に耐えうるように改良したらファイルが8つになってしまいますたorz
興味ある方いれば(まだまだ試作品ですが)UPしますけど・・・どうしよう
73 :
13:2005/04/06(水) 23:27:58 ID:JXR0Jel3
>72
是非
つーか826氏すごすぎ。本当は俺が組まなくちゃいけないんだろうけどorz
ソース眺めて解析とアルゴリズム考えてばっかで指より頭しか使ってないす。申し訳ないorz orz orz
74 :
13:2005/04/07(木) 02:02:14 ID:msMWyOlN
'武器
ITME[I][0]=I_No
ITME[I][1]=NAME
ITME[I][2]=攻撃
ITME[I][3]=命中
'防具
ITME[I][0]=ITME_No
ITME[I][1]=NAME
ITME[I][2]=防御力
ITME[I][3]=回避
'道具
ITME[I][0]=ITME_No
ITME[I][1]=NAME
'I_No=0は武器
'I_No=1は防具
'I_No=2は道具
落ちているのは"&"'箱に統一。箱を開けるとランダムにアイテムが手に入る
75 :
13:2005/04/07(木) 02:05:00 ID:msMWyOlN
if CHARx,CHARy="&"then R=rand%3
for i=0 to 5
CHAR_ITME[I_CNT][i]=ITME[R][i] next'アイテムをCHAR_ITMEにいれる
if ITME[R][0]=0 or 1 then'武器or防具なら
for i=4 to 5
if rand%100>90 then
for i=4 to 5
CHAR_ITME[I_CNT][i]=ITME[R][i]
ITME[R][i]=rand%3
next
'ITME[1][4]=攻撃(防御)修正
'ITME[1][5]=命中(回避)修正
てやるとアイテムの書き方は
ITME[1][0]=0'武器
ITME[1][1]="ショートソード"
ITME[1][2]=1'攻撃力1
ITME[1][3]=1'防御力1
て書けて後々簡単かな
76 :
13:2005/04/07(木) 02:06:56 ID:msMWyOlN
soft2("END")label 0 lock()color(0,0,0)frect(0,0,240,240)color(0,0,0)rect(4,4,132,133)color(250,250,250)frect(5,5,130,131)color(0,0,0)text("&@",60,60)
color(250,250,250)text("TIME",150,20)text(" HP ",150,35)A=scan if A=keysoft2 then exit elseif A=keypound then
color(250,250,250)text("LV"+"/"+STR,4,160)text("STR"+"/"+STR,4,175)text("満腹",4,190)elseif A=keyast then
color(0,0,0)frect(0,0,240,240)color(250,250,250)
for i=1 to ICNT
if CITME[i][0]=2 then text(i+"."+CITME[i][1],4,19+15*i)
else
text(i+"."+CITME[i][1]+"("+CITME[i][2]+","+CITME[i][3]+")("+CITME[i][4]+","+CITME[i][5]+")",4,19+15*i)
endif
next
elseif A=keyleft then #ITME# ICNT=ICNT+1 R=abs(rand)%6+1
for i=0 to 5
CITME[ICNT][i]=ITME[R][i] next'アイテムをCHAR_ITMEにいれる
if ITME[R][0]=2 then text(ITME[R][1]+"を拾った",4,175)
else
text(ITME[R][1]+"("+ITME[R][2]+","+ITME[R][3]+")("+ITME[R][4]+","+ITME[R][5]+")を拾った",4,175)endif endif unlock(1)input()goto 0
77 :
13:2005/04/07(木) 02:10:42 ID:msMWyOlN
'ITME
ITME[1][0]=0
ITME[1][1]="ナイフ"
ITME[1][2]=1
ITME[1][3]=0
ITME[2][0]=0
ITME[2][1]="ショートソード" ITME[2][2]=2
ITME[2][3]=1
ITME[3][0]=0
ITME[3][1]="ロングソード" ITME[3][2]=4
ITME[3][3]=3
ITME[4][0]=1
ITME[4][1]="プレートアーマー"ITME[4][2]=3
ITME[4][3]=4
ITME[5][0]=1
ITME[5][1]="フルプレートアーマー"
ITME[5][2]=5
ITME[5][3]=8
ITME[6][0]=2
ITME[6][1]="食料"
ITME[6][2]=80
すげキタネorz
GETI=ITME[][]+[][]+・・・て配列で入れればGETI+"を拾った"てできるんだよね?
78 :
0.02:2005/04/07(木) 08:30:37 ID:hGMi4Ldd
お二人ともお疲れ様デス
エンジン部分はよくわかんないけど
アイテム部分って、自分で自由にアイテム作れるって事かな?
そういうコンストラクティブな所ってめちゃ好きなんで興味津々
なんか最近、静観組が多そうですがちょいと質問を。
例えばITME[I][0]=とかの、インデックスを2つ付ける奴ですが
これって具体的にどういった使い方が有効なのか、
どのようなプログラムを書かないといけないのか講義お願いします。
79 :
13:2005/04/07(木) 08:57:28 ID:msMWyOlN
アイテムとモンスターは自由にいじれるというよりはいじりやすいように作った方がバランスとるときも楽だしね。FF好きなら自分でエクスカリバーつくっちゃおーなんてもできるし
配列[i][j]は例えば今回のアイテムを例えると
ITME[1][0]=0'種類
ITME[1][1]="ナイフ"'名前
ITME[1][2]=1'能力1
ITME[1][3]=0'能力2
ITME[4][0]=1
ITME[4][1]="プレートアーマー"ITME[4][2]=3
ITME[4][3]=4
て先に入れちゃうと
j=1
for i=0 to 3
text(ITME[j][i],X,Y+i*15)
next
この5行で
0
ナイフ
1
0
てとりだせるの。j=4にすればプレートアーマーになるんだけど、配列の使い方は826氏すごいうまいよ。
ようは
ITME[i]の中の[j]番目のデータってことでよいのかな。
しかしあれだけローグライクみんなで作ろうって言ってた人は何処へ
80 :
0.02:2005/04/07(木) 09:21:35 ID:hGMi4Ldd
おお、ありがとん
てっきりインデックスは一個しか設定できないモンだと思ってたから勉強になったよ
2重のforを使う時とかに使えるのか…
インデックスは変数宣言いらないから尚更使えますな
追加質問。何度もすまん。
例えば「j=1i=0to 3」で、アイテムjの項目(i)が0から2までしかなかった場合、
ITME[1][3]が読み出せずにエラーになるのかな?
81 :
>78メル欄:2005/04/07(木) 09:52:12 ID:msMWyOlN
ITMEorz
そいえばなんで[i][j]て使い出したんだろ。
>80
0がでるんじゃないかな。無記入は初期値0だから
ITEM[i][0]に種類(0,1,2)をいれて
ITEM[i][0]=0 or 1は武器防具だからto 5
ITEM[i][0]=2は道具だから名前だけでよいのでto 1
にしたよ
でも" "を入れると問題ないかもと思ったけど(,)(,)があるからやっぱりダメかな
とりあえずやってみてわからないときは826センセに聞くのが一番鴨
82 :
727:2005/04/07(木) 12:48:21 ID:z8xmKeQM
ドットヘルパ作った奴です。
二人(三人?)ともすごいですねぇ。俺も参加したいのは山々なんですが、携帯の電源が突如落ちるバグと、仕様不明なためソース解読やっとりません…。つーか解読無理(笑)
全体像とシステム間の仕様や使用変数(関数)リストなどを作ってもらえれば、参加出来る人が増えるんじゃないでしょうか?
俺は携帯しかないんでちょっと参加はキツそう。ってことで、静かに見守っております。頑張れー
83 :
13:2005/04/07(木) 13:15:13 ID:msMWyOlN
俺も携帯しかないよ。電源落ちるのはちと怖いけど、参加者が多ければ多い程ウレシタノシ。だから727氏0.0.2氏ももしよければ
俺もほとんど理解出来てナイからゆっくり読み解きながらコメントと関数リストと関数の変更してみようかな
84 :
NOBA:2005/04/07(木) 15:41:04 ID:5FGEas6v
何であの時Phase3にしなかったのか、今でも悔やまれてしょうがないです…。せめてQVGAにしとくんだったよ。では皆さん頑張って
ここ良スレだな。みんなすごい技量持ってるし。ガンガレ。超ガンガレ
俺も参加したいけどローグ自体をやったことない(´・ω・`)出来ることは手伝います。
826センセ視界の部分聞きたいんだけど
'「TEST_4」
'マップ書き換えサブ
label KAE
MAP[y] = substr(MAP[y],0,x-1)+ a + substr(MAP[y],x,strlen(MAP[y])-x) return
'マップ表示サブ
label HYOJI
yield() lock()color(50*LT,50*LT,50*LT) frect(4,4,132,132) color(250-50*LT,250-50*LT,250-50*LT)
for i=-LT to LT
text(substr(MAP[CHARy+i],CHARx-1-LT,1+LT*2),65-12*LT,78+12*i)nextunlock(1) return
MAP[Y]に-X軸の見える範囲(LT)+自分の位置+X軸の見える範囲(LT)のそれぞれの文字列を入れて表示、でよいんだよね?
MAP[1]="*□"+"□"+"*□"
MAP[2]="*□"+"*"+"□*"
MAP[3]="□□"+"□"+"*□"
・
・
・
こんなかんじで
>14氏
シレン、トルネコ、RogueLike,miRogue。前者ふたつは家庭用、後者ふたつは携帯で無料で落とせるよ
で忘れてたけど826センセのおかげでうpと同時にβ版完成とします。
ここからはちと仕様を決めていきたいなと。
88 :
14:2005/04/07(木) 19:46:21 ID:p0g7FHly
>>87 ありがとうです。探してみる…
って、あれ?チョコボの不思議(ryも似たようなもの?それならやったことある
↑チョコボよりシレンに近いですね。
90 :
826:2005/04/07(木) 20:15:08 ID:ol0yWh1g
'「TEST_本体」
color(70,70,70) frect(0,0,width,height)
origin(width/2-66,height/2-72)
color(255,255,255) text("LODING",31,70)
LT=4 CNT=0 MW=30 MH=30 CMAX=10 '設定
#タイプデータ#
#マップ作成#
'キャラ作成
for BCN=1 to CMAX
gosub "BONE"
next
gosub "HPGAUGE" 'HPゲージ
gosub "HYOJI" 'マップ表示
soft2("END")
'メイン
label MAIN
CN=1
label MAIN1
goto Calgorithm[CN]
label TURNEND
if CN<CMAX then CN=CN+1 goto "MAIN1" endif
CNT=CNT+1
if CNT%50=49 then TIME=TIME+1 LT=5-TIME%6 gosub "HYOJI" endif
goto "MAIN"
#主人公#
#アルゴリズムZAKO#
#バトル処理#
#サブ#
#キャラ作成サブ#
91 :
826:2005/04/07(木) 20:15:58 ID:ol0yWh1g
'「タイプデータ」
'種類番号1
TDname[1]="主人公" '名前
TDsymbol[1]="@" 'シンボル
TDalgorithm[1]="SYUJINKOU" 'アルゴリズム
TDhp[1]=100 '体力
TDatk[1]=50 '攻撃力
TDdef[1]=0 '防御力
TDhit[1]=10 '命中
TDavo[1]=4 '回避
'種類番号2
TDname[2]="モンスター"
TDsymbol[2]="M"
TDalgorithm[2]="ZAKO"
TDhp[2]=53 TDatk[2]=10 TDdef[2]=0 TDhit[2]=8 TDavo[2]=0
'種類番号3
TDname[3]="デーモン"
TDsymbol[3]="魔"
TDalgorithm[3]="ZAKO"
TDhp[3]=100 TDatk[3]=40 TDdef[3]=20 TDhit[3]=12 TDavo[3]=3
'種類番号4
TDname[4]="ぬるぽ"
TDsymbol[4]="ぬ"
TDalgorithm[4]="ZAKO"
TDhp[4]=50 TDatk[4]=2 TDdef[4]=10 TDhit[4]=10 TDavo[4]=2
'タイプデータ合計
TDTOTAL=4
92 :
826:2005/04/07(木) 20:16:43 ID:ol0yWh1g
'「マップ作成」
'基礎部分
MAP[1]=""
for i=1 to MW
MAP[1]=MAP[1]+"#"
next
MAP[MH]=MAP[1]
'
for i=2 to MH-1
MAP[i]="#"
for j=2 to MW-1
R=abs(rand)%100
if R<=80
then MAP[i]=MAP[i]+" "
else MAP[i]=MAP[i]+"*"
endif
next
MAP[i]=MAP[i]+"#"
next
'ショップ等書き込み
MAPS[1]="<"'洞窟
MAPS[2]="Ψ"'道具屋
MAPS[3]="Ж"'宿屋
for i=1 to 3
RX=abs(rand)%(MW-2)+2 RY=abs(rand)%(MH-2)+2
x=RX y=RY a=MAPS[i] gosub "KAE"
next
93 :
826:2005/04/07(木) 20:17:43 ID:ol0yWh1g
'「主人公」
label SYUJINKOU
Tx=Cx[CN] Ty=Cy[CN]
'キー入力処理
label key
k=scan
if k and keyleft then Tx=Tx-1
elseif k and keyright then Tx=Tx+1
elseif k and keyup then Ty=Ty-1
elseif k and keydown then Ty=Ty+1
elseif k and keyselect then goto "TURNEND"
elseif k and keysoft2 then end
else goto "key"
endif
'移動先チェック
p=strat(MAP[Ty],Tx-1)
if p=" " then gosub "IDOU" goto "TURNEND"
elseif p="*" or p="#" then goto "TURNEND"
elseif p="<" then goto "TURNEND"
elseif p="Ψ" then goto "TURNEND"
elseif p="Ж" then goto "TURNEND"
endif
goto "BATTLE"
94 :
826:2005/04/07(木) 20:18:34 ID:ol0yWh1g
'「アルゴリズムZAKO」
label ZAKO
Cx=Cx[CN] Cy=Cy[CN]
ECx=Cx[1] ECy=Cy[1]
if abs(Cx-ECx)>3 or abs(Cy-ECy)>3 then goto "TURNEND" endif
if Cx<ECx then Tx=Cx+1
elseif Cx>ECx then Tx=Cx-1
else goto "ZAKO1"
endif
Ty=Cy
p=strat(MAP[Ty],Tx-1)
if p=" " then gosub "IDOU" goto "TURNEND"
elseif p="@" then goto "BATTLE"
endif
label ZAKO1
Tx=Cx
if Cy<ECy then Ty=Cy+1
elseif Cy>ECy then Ty=Cy-1
else goto "TURNEND"
endif
p=strat(MAP[Ty],Tx-1)
if p=" " then gosub "IDOU"
elseif p="@" then goto "BATTLE"
endif
goto "TURNEND"
95 :
826:2005/04/07(木) 20:19:46 ID:ol0yWh1g
'「バトル処理」
label BATTLE
ECN=CIDX[Tx][Ty]
r=abs(rand)%10
if r<Chit[CN]-Cavo[ECN]
then
Chp[ECN]=max( 0, Chp[ECN]-max(0,r+Catk[CN]-Cdef[ECN]) )
color(255,0,0) gosub "Beffect"
if Chp[ECN]=0 then goto "LOST" endif
else
color(150,170,255) gosub "Beffect"
endif goto "TURNEND"
'被攻撃キャラロスト
label LOST
dispose(CIDX[Cx[ECN]][Cy[ECN]])
x=Cx[ECN] y=Cy[ECN] a=" " gosub "KAE"
gosub "HYOJI"
BCN=ECN gosub "BONE"
gosub "HYOJI"
if ECN=1 then gosub "HPGAUGE" endif
goto "TURNEND"
'戦闘エフェクト
label Beffect
if abs(Tx-Cx[1])<6 and abs(Ty-Cy[1])<6
then
text("ノ",60+12*(Tx-Cx[1]),74+12*(Ty-Cy[1]))
if ECN=1 then gosub "HPGAUGE" endif
sleep(50) gosub "HYOJI"
endif
return
96 :
826:2005/04/07(木) 20:21:23 ID:ol0yWh1g
'「バトル処理」
label BATTLE
ECN=CIDX[Tx][Ty]
r=abs(rand)%10
if r<Chit[CN]-Cavo[ECN]
then
Chp[ECN]=max( 0, Chp[ECN]-max(0,r+Catk[CN]-Cdef[ECN]) )
color(255,0,0) gosub "Beffect"
if Chp[ECN]=0 then goto "LOST" endif
else
color(150,170,255) gosub "Beffect"
endif goto "TURNEND"
'被攻撃キャラロスト
label LOST
dispose(CIDX[Cx[ECN]][Cy[ECN]])
x=Cx[ECN] y=Cy[ECN] a=" " gosub "KAE"
gosub "HYOJI"
BCN=ECN gosub "BONE"
gosub "HYOJI"
if ECN=1 then gosub "HPGAUGE" endif
goto "TURNEND"
'戦闘エフェクト
label Beffect
if abs(Tx-Cx[1])<6 and abs(Ty-Cy[1])<6
then
text("ノ",60+12*(Tx-Cx[1]),74+12*(Ty-Cy[1]))
if ECN=1 then gosub "HPGAUGE" endif
sleep(50) gosub "HYOJI"
endif
return
97 :
826:2005/04/07(木) 20:22:24 ID:ol0yWh1g
'「サブ」
'キャラ移動サブ
label IDOU
dispose(CIDX[Cx[CN]][Cy[CN]])
CIDX[Tx][Ty]=CN
x=Cx[CN] y=Cy[CN] a=" " gosub "KAE"
x=Tx y=Ty a=Csymbol[CN] gosub "KAE"
Cx[CN]=Tx Cy[CN]=Ty
gosub "HYOJI" return
'マップ書き換えサブ
label KAE
MAP[y] = substr(MAP[y],0,x-1)+ a + substr(MAP[y],x,strlen(MAP[y])-x) return
'マップ表示サブ
label HYOJI
yield() lock()
color(50*LT,50*LT,50*LT) frect(0,0,132,132) color(250-50*LT,250-50*LT,250-50*LT)
l=min(Cx[1]-1,LT)
r=min(MW-Cx[1],LT)
t=min(Cy[1]-1,LT)
b=min(MH-Cy[1],LT)
for i=-t to b
text(substr(MAP[Cy[1]+i],Cx[1]-1-l,1+l+r),60-12*l,74+12*i)
next
unlock(0) return
'HPゲージ表示サブ
label HPGAUGE
yield() lock()
color(0,0,0) frect(2,138,129,4)
color(255,0,0) frect(2,138,Chp[1],4)
unlock(0) return
98 :
826:2005/04/07(木) 20:23:04 ID:ol0yWh1g
'「キャラ作成サブ」
label BONE
if BCN=1 then TN=1 else TN=abs(rand)%(TDTOTAL-1)+2 endif
Cname[BCN]=TDname[TN]
Csymbol[BCN]=TDsymbol[TN]
Calgorithm[BCN]=TDalgorithm[TN]
Chp[BCN]=TDhp[TN]
Catk[BCN]=TDatk[TN]
Cdef[BCN]=TDdef[TN]
Chit[BCN]=TDhit[TN]
Cavo[BCN]=TDavo[TN]
fg=0
while fg=0
Cx[BCN]=abs(rand)%(MW-2)+2
Cy[BCN]=abs(rand)%(MH-2)+2
fg=(strat(MAP[Cy[BCN]],Cx[BCN]-1)=" ")
wend
x=Cx[BCN] y=Cy[BCN] a=Csymbol[BCN] gosub "KAE"
CIDX[Cx[BCN]][Cy[BCN]]=BCN
return
99 :
826:2005/04/07(木) 20:27:36 ID:ol0yWh1g
orz間違えて「バトル処理」を2つ上げてしまった、どちらか一つで良いです
取り敢えずキャラデータを複数使えるようにしてみたり。
個人的にはNOVA氏にも参加してもらいたいので少し表示をいじってみた
まだアイテム機能とか無いわけですが・・・
バトル処理ルーチンで装備アイテムの分補正を掛けるか、
それとも装備変更メニューでCatkやCdefの値を直接変化させるか・・・。
パラメーターは見やすさを考慮して今のような変数名にしてみたけど、
コピー時の効率とか考えると13氏の案の通り2次元配列にした方が良いような
あと、キャラクター関連のデータ管理はやや解りづらいかもしれない
実は昨日の時点ではもっと難解だったけど・・・(余りにも意味不明だったので変更
一度プロが書いたソースを見てみたいなぁ
プログラム書いてる内に色々迷うところが有ったので、
やはりもう少し仕様を煮詰めてからの方が良さげですね
>>86 まあ大体それで合ってるような微妙に違うような(汗
何故かいつの間にセンセになってるし
(((゚Д゚;)))ガクガクブルブル
100 :
0.02:2005/04/07(木) 23:09:44 ID:aWd3O5TO
もう
>>826はセンセで決定ですなw
お疲れ様ですセンセ、研究させていただきます
俺もアイデアくらいなら出せると思うので応援させて頂きます
ドッヘルの中の人も、NOBAサンもみんなで参加しようYO(゚∀゚)
ところで保管庫に動きがないのが不安(´・ω・`)
>826センセ乙
今の視界
*□□*□
□□□□*
**@□□
□□*□*
*□□□□
これを
*□□*■
□□□□*
■*@□□
□□*□*
*□■□■
障害物での死角を勉強がてらやってみようとおもったんだけど
for j=1 to LT*2+1
for i=-LT to LT
[CHARx+i][j]を調べる。"*"ならCHARx+iの先は"■"
[j][CHARy+i]を調べる。"*"ならCHARy+iの先は"■"
next
next
ところがイマイチマップ書き換えのあたりわからないんでの解説を
102 :
826:2005/04/08(金) 00:55:11 ID:DysAwR6S
>>101 マップの書き換え自体は
x、yにマップの書き換えたい箇所の座標
aに変更後の文字(全角1文字)を入れてから
gosub "KAE" で出来るようになってます
具体的にKAEルーチンで行っている
MAP[y] = substr(MAP[y],0,x-1)+ a + substr(MAP[y],x,strlen(MAP[y])-x) returnは、2次元配列に直すと
MAP[x][y] = a
というただそれだけの事なんですが
表示高速化のためマップを1文字ずつ格納するのではなく一行分まとめて格納してるのでこうなってます
もしマップのある行(ここでは仮に7)が
"#・・A・*#"
の時に、AをBに変えたい場合は
MAP[7] = "#・・" + "B" + "・*#"
このようにします。
つまり
MAP[7] = (MAP[7]のAの左側) + "B" + (MAP[7]のAの右側) ということです
これをAの座標(x/4,y/7)を元に処理する場合
(MAP[7]のAの左側) は
substr(MAP[7],0,4-1) で、
(MAP[7]のAの右側) は
substr(MAP[7],4,strlen(MAP[7])-4) で得ることが出来ます
ここでの最大の注意点は
マップ座標は1から
substrでの箇所指定は0から
それぞれ始まっている点です。
103 :
826:2005/04/08(金) 01:46:57 ID:DysAwR6S
>>54気分転換も兼ねてこんなの作ってみたけど参考になるかな・・・
'「名前入力システム」
ABC=" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.・-=/"
for x=0 to 9 y[x]=0 next
x=0
label hyoji
yield() lock() clear(0,0,width,height)
for i=0 to x
text(strat(ABC,y[i]),10+i*6,60) '文字表示
next
frect(10+x*6,59,6,1) 'カーソル表示
unlock(0) sleep(100)
label key
k=scan
if k=keyright then x=min(9,x+1)
elseif k=keyleft then y[x]=0 x=max(0,x-1)
elseif k=keyup then y[x]=(y[x]-1+42)%42
elseif k=keydown then y[x]=(y[x]+1)%42
elseif k=keyselect then goto "kettei"
else goto "key"
endif
goto "hyoji"
label kettei
name="数字が入力された時の不具合対策"
for i=0 to x
name=name+strat(ABC,y[i]) 'ネーム作成
next
name=substr(name,15,x+1) '"〜不具合対策"をネームから取り除く
text("Your neme is",5,80) text("「"+name+"」",15,96)
clearinput() input()
exit
'使い方(キー左右でカーソル移動、上下で文字選択、セレクトで決定)
104 :
13:2005/04/08(金) 02:15:06 ID:HJbTzbn0
>102
なんとなくは、・・
ところでプログラムが全く動かないんだけどまさか限界?なわけないよねf^^;
前に誰かクラシックでコピってるって人いたよね?あれって
ttp://c-au.2ch.net/ これじゃないよね?
105 :
826:2005/04/08(金) 03:22:21 ID:DysAwR6S
>>104もしかしてiMona使ってますか?
iMona使って全文コピー出来てるなら
もしかするとリマーク(')のせいかも(違うかも
iMonaの少なくともEZ版だとコピー時に改行コードが反映されないので
例えば
'表示
TEXT("XYZ",10,20)
こうゆうプログラムだと
'表示 TEXT("XYZ",10,20)
こうなって無効になってしまうので。
もしこれが原因だったら
今度は
'表示'
こうゆう風にちゃんと閉じときますんで
あとそれもクラシックには違いないですが、レスコピーが出来るのはそれのミラー版の方です
↓ミラーサイトにはこのページから行ける
http://c.2ch.net/!.h ↓因にオレはこんな感じに設定して使ってます
http://i.i2ch.net/x/-8G1.lI!mail=sage/i クラシックだと改行コードが反映されるんで写すときはおもにiMonaよりこっちを使用
(携帯ベーシックをアプリ中断状態でキープできるし
106 :
13:2005/04/08(金) 08:32:42 ID:HJbTzbn0
>105
すげー便利。ありがと。今までimonaつかってたけど感動しちゃうね。
そしてGJ。すげーGJ
で、これから決めることと
【目的】
【ダンジョンのアルゴリズム】
【世界観】
【モンスター発生】
【アイテムの条件】
【攻撃判定】
あとなにかあるかな
107 :
727:2005/04/08(金) 22:07:16 ID:TS3+/4Ts
ステータス全般とかはどうかな?
例えばキャラには
●HP(生命力)
●力(攻撃力)
●ガッツ(クリティカル率)
●素早さ(回避率)
●腹(空腹具合)
武器には
●攻撃力
●命中率
●特殊オプション(防御無視等)
命中率をキャラ依存ステにしてもいいし。なるべく既存のとは違うモノを作れればいいなと思ってるんだけど…。
なんか関係ないこと言ってたらスマン
108 :
826:2005/04/08(金) 22:29:38 ID:DysAwR6S
>>100(0.02氏)
遅ればせながらライトアウツやってみました
画が綺麗なのが良いですね(ちょっと感動
質問なんですが投稿するときにどこかのスペース抜いたりしましたか?
(なんか最初エラーが出て動かなかったので、スペースを一つずつ入れ直したら動きました
>>106(13氏)
ミラー版クラシックは時々重いことがあるんで、その時は「テストサーバ」の方使ってくださいね
(詳しくは携帯・PHS板にスレが有ったと思うのでそちらを
オレは今日初めて「分割コピー」という機能が有る事に気づいたり・・・(遅
機種に関わらず500バイトで分割されるみたい
決めたい事と言えばマップの切り替わり方かなあ
エリア移動するたびに作り直すのか否か。
現れるモンスターの種類もエリアに応じて変わる方が良いよね
あとはセーブ機能対応にするのかとか(セーブ機能使った事ないけど・・・
>>107(727氏)
>なるべく既存の物とは違う物に
オレも同感です
単純にコピー物を作っても(作れたとして)、元の物より面白くはならない訳だし
作るならなるべくオリジナリティーのある物にしたいですね
109 :
13:2005/04/08(金) 22:29:40 ID:HJbTzbn0
【項目】も決めないといけないね
【モンスター発生率】
モンスター[M_LV][][]とモンスターにレベルをいれて
モンスターBORN
M_LV=abs(rand)%3+深さ
にするか
完全randにしちゃうか…
前者はバランスとれば面白いけど後者のハラハラって手めあるんだよね。楽だし
【ダンジョン】
ダンジョンは落石したダンジョン
ランダムマップ"*" or " " or ";"
";"は掘れる
randに部屋を作る
かrogueぽく部屋と通路にするか
110 :
13:2005/04/08(金) 23:01:07 ID:HJbTzbn0
>108
MAP[階層][X][Y]
にして
階層が0なら店と降り階段のみ、他は上がり下り階段を表示
下りなら階層+1云々だといけそうだよね。セーブに関してはセーブポイントを地上に設定してステ、アイテムを記録ていう手もあるよ
111 :
13:2005/04/09(土) 03:21:48 ID:f8nioM/j
流れだけ
「固定型マップ作成」
for KAI=0 to 10
MAP[KAI][1]=""
略
'ショップ等書き込み
if KAI=0 then
j=3
MAPS[0][1]="<"'洞窟
MAPS[0][2]="Ψ"'道具屋
MAPS[0][3]="Ж"'宿屋
else
j=1
MAPS[0][1]=">"'上り
endif
for i=1 to j
RX=abs(rand)%(MW-2)+2 RY=abs(rand)%(MH-2)+2
x=RX y=RY a=MAPS[KAI][i] gosub "KAE"
next
next
1.初めにマップを全部作る(固定型)
2.階段の上り下りでマップをつくる(ランダム型)
3.降りたらマップを作る。帰り道は記憶(帰路固定型)
4.洞窟に入ったらマップを作る(ランダム固定型)
みんなどれをやってみたい?ほかにもなにかあるかな
>>108(センセ)
すいません、たぶん5行目の「for y=」を
「fory=」としている所かな…凡ミスでした、すみませんorz
プレイありがとございます〜
>>111(13氏)
1の案にするなら、イベントとか入れたいなぁ…
そうなるとローグじゃなくなるけど、簡単に鍵と扉みたいな。
ちょっとした謎解きもできそう。
でもランダムの方が何かと簡単だし、2に一票かなぁ…
何も出来ないくせに提案するだけですがorz
お金みたいに何かを拾い集めるのっていいかも
クリスタルとか、厨房な設定でもいいし
レベルアップではなく、クリスタル一個毎に能力が少しずつ上がるとか
これの利点はモンスターにEXPを設定しなくて良い、
主人公パラメータにEXP管理がいらないということ
ダメな所はモンスター戦闘がダルくなる、
人によって成長度合いに差が出てしまうこと
モンスターを倒す度に最大HP+1とかならいいかもですが…
モンスター発生に関しては後者の案がなかなか(・∀・)イイ!
強すぎる敵から逃げるという要素も生まれるし面白いかも。
でも強すぎるモンスターばっかり出現すると、
全くゲームにならない可能性があるので
ある程度は出現確率を操作できるプログラムがいいですね
レアモンスターなんかも設定できそう…
またしても提案だけですが_no orz
113 :
13:2005/04/09(土) 11:44:54 ID:f8nioM/j
いっそLVの概念を捨てて能力はお金で上げる。SAVEは能力とアイテムを全てお金に換算した値(またはお金のみ)。LOADは金を引き継ぎにすればSAVEはすごい楽。
利点
プレイ毎に能力を変えられる
保存が楽
欠点
アイテムがなくなる。
でもITEMひとつひとつ保存させるのは大変だしなぁ
モンスターのバラまきは例えばモンスター毎にLVを1〜5まで決めて
R=abs(rand)%100
R<50ならLV1M
R<70なら
・
・
みたいにしてけばよさげ。もしくは(rand)%100+FUKASA*10にして奥に行くほど強くなるとか
114 :
NOBA:2005/04/09(土) 16:34:50 ID:OHlHaR/S
流れと関係ない上に今更ですが、T=15and 240こういうこともできたんですね。まぁ、だからなにってこともないんですが…
こんなのどう?ローグにも使えると思う。
MS[i]にセーブ内容代入、MNにMS[i]の要素数を代入、サブルーチンMS呼出でセーブ。
するとサブルーチンML呼出でML[i]にセーブ内容が読み出される
これで分かると思う
「実験用」
MS[0]="00000" MS[1]="11111" MS[2]="22222" MS[3]="33333" MN=4
gosub "MS"
gosub "ML"
for i=0 to bn text(ML[i],0,12*i) next
input() exit #MultiSAVE#
「MultiSAVE」
label MS
mf=MS[0]
for i=1 to MN mf=mf+","+MS[i] next
save(mf)
return()
label ML
ls=load() tn=strlen(ls) bn=0 bfi=-1
for i=0 to tn-1
if strat(ls,i)="," then bn=bn+1 ML[bn]=substr(ls,bfi+1,bfn-bfi-1) bfi=bfn endif
bfn=bfn+1 next return()
116 :
14:2005/04/09(土) 22:19:18 ID:hZJq7L6s
名乗り忘れっorz
MS[i]のiは0からスタート、マイナスは非対応。
拡張しやすく作ったから要望が多ければマイナスと二次元配列変数の保存もつくるよ〜
>>NOBA氏
できればorとの違いを教えて頂きたく
>>14氏
え!セーブって
インデックス使えば何個も覚えさせる事が出来たんですか
こりゃやばい事になったぞ(;・∀・)スゴク…イイデス…
118 :
14:2005/04/09(土) 22:47:07 ID:hZJq7L6s
>>117氏
いや、いままで一個しか保存出来なかったから(見た目)複数個保存出来るようにした。
しかしsave()でどれくらい保存できるんだろう…?
二次元配列簡単に出来るとか言っちゃったけどやっぱり嘘だったことが判明(´・ω・`)
けどほしい人がいるならガンガル(`・ω・´)シャキーン
119 :
NOBA:2005/04/09(土) 23:13:13 ID:OHlHaR/S
100と240は16進で言うと64とF0で2進にすると01100100と11110000ですよね。でそれぞれの演算結果を2進でサラッと言うと
100and 240
01100000
100or 240
11110100
100xor 240
10010100
こんな感じです。ちなみに携帯BASICでの返り値は非ゼロなら1が返るのでどれも1になります。
120 :
826:2005/04/09(土) 23:26:11 ID:4EDepRj/
ゲ製作技術板「ダンジョン自動生成」スレに書いてある中で一番簡単そうな
http://pc8.2ch.net/test/read.cgi/gamedev/1027084016/42 のアルゴリズムでダンジョン自動作成プログラム作ってみたけど・・・あんまり面白くないやorz
他のアルゴリズムも見てみたけど良く解らないし・・・見てる内に眠くなってzzz
>90-99のプログラムと同じフォルダに入れてから、「TEST_本体」の#マップ作成#の部分を#マップ作成2#に変えて使ってください
'「マップ作成2」'
'通路幅'
TW=2
'前処理'
MW=(MW-1)/(TW+1)*(TW+1)+1
MH=(MH-1)/(TW+1)*(TW+1)+1
'基礎部分'
MAP[1]="" for i=1 to MW MAP[1]=MAP[1]+"#" next MAP[MH]=MAP[1]
a="" for i=1 to MW-2 a=a+" " next
for y=2 to MH-1 MAP[y]="#"+a+"#" next
'迷路壁作成'
for yy=TW+2 to MH-(TW+1) step TW+1
for xx=TW+2 to MW-(TW+1) step TW+1
r=abs(rand)%3
for yp=-(r=0)*TW to (r=2)*TW
for xp=-(r=3)*TW to (r=1)*TW
x=xx+xp y=yy+yp a="#" gosub "KAE"
next
next
next
next
121 :
826:2005/04/09(土) 23:41:05 ID:4EDepRj/
今気づいた、
>>120のアルゴリズムじゃ閉じたエリアが出来る可能性があるから、キャラや階段を完全にランダムに配置しちゃ駄目だったorz
あと一文字までだったら変数名やラベル名に漢字とひらがな使えたんだね
なんか乗り遅れた気がしないでもないが……
複数の変数を保存するルーチンって需要ある?
ぜひ欲しい
元の変数名で取り出せるとさらにありがたい
124 :
122:2005/04/11(月) 10:24:20 ID:8sIk3b3Q
CPUパワー3〜5割で動いてるせい(別スレッドで動作)なのか、
はたまた最適化が足りなさすぎるのか、
実験してみると
>>115氏謹製より全然速度でねぇ……
しかも各ルーチン500バイト越えてるし……
おまけにめちゃくちゃメモリ消費するし……
かなりだめぽいorz
ルーチン見なおすか……。
save()変数が複数取り出せるようになったらどんなもの作りたい?
俺はやっぱり、モンスター捕獲型RPGを…
ていうか前スレの最後と現行スレの最初にだけ書き込んでるまとめ管理人氏って
もしかして偽者だったのか…?
全然更新されてないような気がするんだが
126 :
826:2005/04/11(月) 18:53:57 ID:rAfJ7fq3
>>123 元の変数名で取り出したかったら
>>115氏のルーチンを使って
セーブする時に
MS[0]=a
MS[1]=b
MS[2]=c
MN=3
gosub "MS"
ロードする時は
gosub "ML"
a=ML[0]
b=ML[1]
c=ML[2]
とすれば出来る
所でモグラ方式のダンジョン自動作成プログラム書いてみたけど今一上手くいかない訳で・・・
13氏は何かプラン有りますか?
127 :
13:2005/04/11(月) 21:44:37 ID:ie3xPSLB
>126
ごめん花見が続いてなんも手つけてなかたよ
うまくいかないって閉じたエリアができちゃうこと?
ちと考えてみる。
>>125 残念ながら本人です。
最近忙しかったのでサボってました…休みを下さいorz
向こうにも書いたのですが、明日あたりには一気に更新出来るかと思います。
すいません。
ブレインFとベーシックの違いを教えてください。 お願いします。
>>まとめ管理人
そうか、正直すまんかった
更新に期待
>>129 BrainFuckは「<>[],.」とかの記号だけでプログラムするんじゃなかったかな
何がどう動くとか何が面白いのかは知らん
文字限定されてるのにゲームとか作れるんだろうか?
131 :
14,115:2005/04/12(火) 08:52:41 ID:oo8D8do1
風邪でぶっ倒れてました。まだ頭痛い…
複数保存に結構需要がありそうなのでしばらくこのネタでやろうかと考えています。
現在のルーチンだと区切りに,を使うんで,は保存できないっす。
,を保存したいときはルーチンいじってください。","の部分を使わない記号にすれば桶です。
>>131 エスケープシーケンス使ってみたらどうかな?
カンマ使いたいときは\.とか(iMona書き込みなためカンマ書くと改行しちまう…)
まぁぶっちゃけルーチン書き換えた方が早いし少ない命令でいい罠。戯れ事だと思ってスルーしてくれ。
A[0]=frect(0,0,240,240)
こうしたらエラーになってしまうんですが。
どうすれば配列を使ってfrectを表示できるのでしょうか?
βακα..._〆(゚▽゚*)
>>133 配列も変数だ。つまり入れられるのは文字か数値。
A[0]=240
frect(0.0.A[0].A[0])
やりたいのはこういうことなのでは?
※iMona改行回避のため、カンマがピリオドになってます
♂ありがとうございます
m(__)m
はっ!?寝てしまった…orz
139 :
非通知さん@アプリ起動中:2005/04/16(土) 01:15:21 ID:J5XuPSuK
あげ
140 :
0.02:2005/04/16(土) 09:25:30 ID:aD3jvqNF
過疎ってますね
■カラーチェッカー(QVGA・非QVGA両対応)
soft1("QUIT")R=0r=0g=0b=0w=width h=height p=5
text("←R+,↑G+,→B+,↓RESET",2,15)
label 0lock()color(r,g,b)frect(0,20,w,h)color(255,255,255)frect(w-48,25,46,95)
color(0,0,0)text("R="+r,w-42,40)text("G="+g,w-42,60)text("B="+b,w-42,80)text("増減幅=",w-46,105)text(p,w-30,119)
unlock(1)
if r+p<256and scan=keyleft then r=r+p
elseif g+p<256and scan=keyup then g=g+p
elseif b+p<256and scan=keyright then b=b+p
elseif scan=keydown or scan=key0 then r=0g=0b=0
elseif scan=keysoft1 then exit
elseif r+p<256and scan=key1 then r=r+p
elseif g+p<256and scan=key2 then g=g+p
elseif b+p<256and scan=key3 then b=b+p
elseif r-p>-1and scan=key4 then r=r-p
elseif g-p>-1and scan=key5 then g=g-p
elseif b-p>-1and scan=key6 then b=b-p
elseif scan=key7 then p=10
elseif scan=key8 then p=5
elseif scan=key9 then p=1
elseif scan=keyast then r=255g=255b=255
elseif scan=keypound then R=r r=g g=b b=R
elseif scan=keyselect then gosub 1r=i g=j b=k endif
goto 0
label 1
i=abs(rand)%256j=abs(rand)%256k=abs(rand)%256return
141 :
0.02:2005/04/16(土) 13:24:32 ID:aD3jvqNF
■座標&四角描画チェッカー
label 8c=1XX=20YY=20soft1("QUIT")soft2("RESET")
label 5lock()clear(0,0,240,300)frect(XX,YY,8,8)
text("座標X"+XX,70,20)text("座標Y"+YY,140,20)
text("移動幅"+c,70,40)text("決定キーで次へ",70,70)unlock()
if YY-c>-1and scan=keyup then YY=YY-c
elseif scan=keydown then YY=YY+c
elseif XX-c>-1and scan=keyleft then XX=XX-c
elseif scan=keyright then XX=XX+c
elseif scan=keyselect then X=20Y=20goto 0
elseif scan=keysoft1 then exit
elseif scan=keysoft2 then goto8
elseif scan=keypound then c=c+1
elseif c>1and scan=keyast then c=c-1
elseif scan=key0 then c=1endif goto 5
label 0lock()clear(0,0,240,300)frect(XX+X,YY+Y,8,8)
line(XX,YY,XX+X,YY+Y)rect(XX,YY,X,Y)
x=XX+X/2y=YY+Y/2line(x-3,y,x+3,y)line(x,y-3,x,y+3)
text("終点X"+X,70,20)text("終点Y"+Y,140,20)
text("移動幅"+c,70,40)
text("rect("+XX+","+YY+","+X+","+Y+")",70,70)unlock(1)
if Y-c>-1and scan=keyup then Y=Y-c
elseif scan=keydown then Y=Y+c
elseif X-c>-1and scan=keyleft then X=X-c
elseif scan=keyright then X=X+c
elseif scan=keysoft1 then exit
elseif scan=keysoft2 then goto8
elseif scan=keyselect then c=1X=20Y=20
elseif scan=keypound then c=c+1
elseif c>1and scan=keyast then c=c-1
elseif scan=key0 then c=1endif goto 0
142 :
0.02:2005/04/16(土) 13:59:07 ID:aD3jvqNF
忘れてたorz
四角描画チェッカーはQVGA用です。
非QVGAにも対応できるかも知れないけどとりあえずご容赦を。
カラーチェッカーは←↑→、1〜6キーでRGB増減、
7〜9キーでRGB増減値変更、↓と0キーはリセット、
*が裏リセット、#でお遊びです。決定キーでランダム色生成。
四角チェッカーは座標モードは方向キーで座標移動。
決定キーを押すとrectモードへ。
rectモードで決定キーを押すと
座標そのままでrectモード継続のセミリセット。
ソフトキー2で最初から。
両モード共通で、*,#で移動幅を増減、0キーでデフォルトの1になる。
とりあえず活気付き希望age
143 :
0.02:2005/04/17(日) 09:59:23 ID:LwUmKcJz
ごめんちょっと四角チェッカー修正
前 : text("終点X"+X,70,20)text("終点Y"+Y,140,20)
↓
後 : text("終点X"+(X+XX),70,20)text("終点Y"+(Y+YY),140,20)
しかしVer.うpこないね
べーしっ君さんに見限られちゃったかな…orz
for i=0 to 3
for j=0 to 3
if(i=j)then next endif
L=L+1
text(i+" "+j,0,strheight*L)
input()
next
text("あ",100,strheight*L)
next
text("い",200,strheight*L)
おいおまいら!おしえてください。
iとjが等しいときだけ飛ばしたいわけなんだけど
if文の中にnextを入れるなんてことはできないの?
それとnextの後の命令が実行されない気がするんですけど。
この例だと"あ""い"が表示されない。
iとjが等しい時、処理を飛ばしたければ、こうすればいいんじゃないかな?
for i=0 to 3
for j=0 to 3
if i<>j then L=L+1 text(i+" "+j,0,strheight*L) input() endif
next
text("あ",100,strheight*L)
next
text("い",200,strheight*L)
input()
↑「iとjが等しくない時処理を行なう」ようにしてみた。
最後にinput()をいれたのは"い"が表示されるのを確認できるようにするため。
ifの中にnext入れるのがダメなのかは分からないけど、確かに変になるよね…3つめのnextが無効になってるのかな…?
ifの中にnextは、BASIC言語の言語仕様として禁止されてなかったっけ?
a<>b ってのはaとbの値(文字列)が異なる時っていう条件式なのか
ずっと<>の使い方分からなかったから参考になった
a<=0 → aは0以下
a<0 → aは-1以下
a>=0 → aは0以上
a>0 → aは1以上
a<>0 → aは1以上もしくは-1以下(aは0と等しくない)
a=0 → aは0と等しい
a<=0 とするより a<1とした方が1バイト節約できるんだな(゚∀゚)
プログラムコンテストみたいなことやりませんか(´・ω・`)
いいよ、じゃあ最初のお題はエアホッケーね。
150 :
0.02:2005/04/21(木) 07:53:25 ID:S5icPpOV
面白そうだね
バウンサーデモとか前スレのNOBA氏のブロック崩しを参考にしてみよ
じゃあ簡単なルールと採点基準を決めとく?
投稿時はコテ必須。
プログラムが短ければ短いほど、処理が速ければ速いほどいい。
独創性と普遍性をを合わせ持つおもしろさがある。
あとなんかある?
152 :
0.02:2005/04/21(木) 23:31:59 ID:vQICmcxl
エラーが出たら減点対象。-30点くらい。
画像が綺麗な物は評価+。主観意見になりそうだけど。
プログラム技術は感嘆の声の数x5点とか。
投稿締切と同時に投票開始、投票締切→結果発表、って感じかな
とりあえず4月30日を締切として
5月8日まで投票期間にしてみる?
153 :
14:2005/04/22(金) 07:09:59 ID:I8RdDimg
日程、採点方法に同意っす。
おもしろそう〜漏れもできたら参加する。テストあるから出来るか分からないけど(´・ω・`)
154 :
0.02:2005/04/22(金) 12:08:14 ID:YiswaoMS
投票方法提案
投票は、その作者の最終版プログラムに対して行う。
投票資格はコンテスト作品を全てプレイした者。
一番素晴らしいと思ったプログラムに+5点を入れる。
技術賞プログラムに+2点。(処理速度、プログラムテクニックを評価)
アイデア賞プログラムに+2点。(ゲームや表現のアイデアを評価)
画像賞プログラムに+2点。(画像の美しさやレイアウトを評価)
その他の作品に3点を振り分ける。
(例:Aに2点、Bに1点/Aに3点/A,B,Cに1点ずつ等)
作者は自分のプログラムに加点できない。
ただし、投票したら作者投票参加点として自分に+3点。
他人を評価しないと損します。
後は投票に左右されないポイント。
ソースを一番短く書けた人+5pt、次いで+2pt、+1pt。以後+0pt。
エラーが出た場合は投票で報告。それ以前の報告は禁止。
報告時点で-20pt。複数報告があってもそれ以上はマイナスされない。
最初にプログラムを提出した人+5pt、次いで+2pt、+1pt。以後+0pt。
投稿作品の修正一回につき-8pt。投稿締切以降は修正不可。
総合得点で優勝を決定。
技術、アイデア、画像、ソース(の短さ)各賞を投票結果から決定。
折角楽しそうな企画なので↑の投票集計が面倒なら俺がやります
いや2chだけでこれをやるのは無理だよ。CGI作る必要があるし
ここだけでやるならそれぞれの作品について議論したりして決める方法が妥当か。
156 :
0.02:2005/04/23(土) 09:04:57 ID:nvOhfSE2
soft1("EXIT")g=2ve=-3x=50y=55V=4PY=40PY2=40color(20,0,140)frect(5,7,100,76)
label 0soft2(PL1+"vs"+PL2)
lock()color(20,0,140)farc(x-2,y-2,5,5)color(255,255,255)frect(0,4,6,82)frect(105,2,6,90)color(0,0,200)farc(106,PY2,3,10)
color(200,0,0)farc(2,PY,3,10)A=scan
if PY<73and A=keydown then PY=PY+3if V<8then V=V+1endif elseif PY>8and A=keyup then PY=PY-3if V>0then V=V-1endif
elseif A=keysoft1 then exit endif j=y-5if j<PY2 then PY2=PY2-3elseif j>PY2 then PY2=PY2+3endif
x=x+g y=y+ve if y<13then ve=ve-ve*2y=13elseif y>76then ve=ve-ve*2y=76endif if x>101then gosub 3
elseif x<9then gosub 4elseif 52<x and x<58then gosub 5endif color(250,200,0)farc(x-2,y-2,5,5)unlock(1)goto 0
label 3p=PY2+1w=PY2+9
if y<p or y>w then PL1=PL1+1PL2=0onvib()sleep(99)endif
if PL1=3then win="YOU WIN !"goto 7endif offvib()g=-3x=101ve=rand%5
color(20,0,140)frect(55,11,5,70)B=abs(rand)%63+13color(255,255,255)frect(55,B-2,5,5)return
label 4
gc()p=PY w=PY+10if y<p or y>w then PL2=PL2+1PL1=0onvib()sleep(99)endif
if PL2=3then win="YOU LOSE..."goto 7endif offvib()g=3x=9ve=rand%5
color(20,0,140)frect(55,11,5,70)B=abs(rand)%63+13color(255,255,255)frect(55,B-2,5,5)return
label 5if B-6<y and y<B+6then g=g*2ve=(rand)%3*3endif return
label 7
setfont("S")color(250,230,0)text(win,12,65)unlock(1)onvib()sleep(999)offvib()clearinput()input()
157 :
0.02:2005/04/23(土) 09:22:44 ID:nvOhfSE2
作ってみました。
「エアホッケーブラスト」
かなり効率の悪いプログラムです。制作時間約5時間。
処理速度の遅さを感じさせないゲームスピードとバランスの調整、
あと上端下端の壁をツィ〜〜とボールが伝う謎のバグ修正に
ちょっと時間がかかりました…いや単純な事だったんですがorz
ゲームスピード調整はうまく出来たつもりです。
上端下端での角度変化のve(角度の変数)=ve-ve*2というのはセルフ目から鱗でした
■操作方法
方向キー上下で自分のパック(左の赤い奴:シャ○専用です)を移動。ボールを打ち返していきます。
ボールを受け切れないと相手に得点が加算され、そのまま跳ね返って行きます。
(跳ね返り時、パックで受けても点を入れても(入れられても)角度はランダムになります…)
・連続で3pt取らないと勝てません。1ptでも取られると自分の得点が0になります。
・真ん中の白いアイテム?に当たると、速度が2倍になり、角度が変化して飛んで行きます。
ここがブラスト。
…それにしてもボールの動きが不自然過ぎるなぁ
>>155 無理かorz
じゃあ普通に品評会方式でいいかもね。
他の先生方の作品に期待しております
158 :
NOBA:2005/04/23(土) 10:16:26 ID:gsXH1NdD
角度はve=-veてやれば一発だよ。俺も今作ってるけどなんかエアホッケーじゃなくなってきたよ…
159 :
0.02:2005/04/23(土) 10:58:16 ID:nvOhfSE2
>>158(NOBA氏)
うわぁああ…マジですかorz
感動しました、ありがとう
エアホッケーじゃない?どんなんだろ…なんか面白そう
NOBAさんの作品期待age(゚∀゚)
160 :
NOBA:2005/04/23(土) 12:53:08 ID:gsXH1NdD
うまくできなかったけど…
label 1color(0,0,0)M=0X=99Y=36XV=0YV=0C=0P=0BX=-9frect(0,0,132,144)label 0lock()A=input(0)color(0,0,0)frect(X,Y,3,3)if BX<63then if A and keyup then R=0gosub 5elseif A and keyleft then R=1gosub 5endif
endif
if A and key1 then end endif
PX=X
PY=Y
if X>66then XV=XV-1else if BX>62and XV>-14and YV>20then R=(XV<-9)*2gosub 5endif
XV=XV+1endif
X=X+XV/8Y=Y+YV/8if X>132or X<0then XV=-XV endif
if Y>72then if X>64and PX<66then p=p+1M=1endif
if X<66and PX>65then c=c+1M=1endif
YV=YV-1else P=0YV=YV+3endif
if Y>142or Y<0then if X>66then c=c+1else p=p+1endif
M=1endif
color(255,255,255)frect(X,Y,3,3)line(0,72,132,72)line(66,0,66,72)frect(65,72,3,72)unlock(1)if M then text("PUSH ANY KEY",0,20)text(c+"-"+p,0,40)clearinput()input()goto 1endif
yield()goto 0label 5if Y>71and P=0then P=1frect(BX-9,BY,18,9)BX=X-4if R=1then BY=Y-4BX=X+4XV=XV-20YV=2-YV i=-8j=8elseif R=2then BY=Y-4XV=XV+20YV=2-YV i=8j=8else i=8j=0BY=Y YV=-YV-2endif
color(255,255,255)line(BX,BY,BX+i,BY+j)endif
return
161 :
NOBA:2005/04/23(土) 12:57:09 ID:gsXH1NdD
自分は右側で上と左で打ち返す。球が横線より下に来ないと打てない。1で終了
クロスしたとこと画面下に重力があり球が上にとびたすか下に落ちるかネット(太い縦線)に当たると点が入る。
コンピュータは弱いです…あまりいじめないでください
162 :
14:2005/04/24(日) 01:41:45 ID:+hxf3Nnp
一応作ったけど重力ネタで被っちゃった(´・ω・`)
残念ながら今回はホッケーは発表出来ない程の悪い出来。控えさせていただきますorz
代わりにホッケー作ったときの副産物置いておきます
「ぐるぐる」
w=width/2 h=height/2 soft1("exit") r=2 origin(w,h-50)
label 0
lock() clear(-w,-h+50,w*2,h*2)
for i=0 to 4 x[i]=r*cos(t+i*90)/5 y[i]=sin(t+i*90)/5 next
for j=0 to 50 step 50 for k=0 to 3 line(x[k],y[k]+j,x[k+1],y[k+1]+j) next next
for l=0 to 3 line(x[l],y[l],x[l],y[l]+50) next
if input(0)=keysoft1 then exit endif t=t+2 unlock(0)
goto 0
163 :
0.02:2005/04/25(月) 09:38:16 ID:ulI0FzlZ
おお、きてる
NOBA氏の重力ホッケー(?)、30分近くハマってしまった…
ちゃんと放物線描いて動くし、中心に重力があるって仕組みもすごい
攻略しがいがある…しかも画像が渋くてカッコイー
14氏のぐるぐる、
渦巻を描く画像デモかな〜と思ったら何この神プログラム
激しくGJです
ぐるぐるみて思ったこと…
描画点4点を設定してその中を塗りつぶす命令、欲しいなぁ…
あとcls()で全消去、レイヤー機能などなど夢は広がる…
164 :
NOBA:2005/04/25(月) 16:21:27 ID:A3pE+ms9
>>0.0.2
ですよね。いろいろほしくて自分でもプログラミングできるアプリ作ろうとしたんですが、9種類の図形描画と乱数の発生が限界でした。何度みても携帯BASICはよくできてます
165 :
14:2005/04/26(火) 22:00:13 ID:+uGkwFdo
>>0.02氏
塗り潰しをline重ねてやってはみたんですが激重でダメでした。あったらいいですねぇ>>四点で塗り潰し
って、ホッケー以外で騒いですいませんです…
ちなみにあれは楕円の関数を習ったんで思い付きでやってみたら、結構綺麗だったんで出しちゃいました。
ちょっとした出来心です…副産物であることは確かですが…反省しております
166 :
0.02:2005/04/26(火) 22:16:43 ID:p06TswZy
NOBA氏アプリ作れる技術あるのか…(;´Д`)
すごいなぁ…もし公開作品あるなら見てみたい(゚∀゚)
しかし、基本的にJavaとBASICは違うのに
ここまで色々とできる携帯BASICはマジですごい。
もちろんNOBA氏のプログラム技術も毎度ながら参考になります。
字詰めとかきっちりだし、計算式も無駄が皆無だし…
14氏のぐるぐるは色を水色にしてクリスタル〜とか
いろいろ遊んでる。綺麗だし…何度見ても神のデキ。
これをRenderModeと別スレッドで走らせたら綺麗かも…
って、重くなりそうだけどorz
しかしながらこの技術を使ったホッケー、
機会があればぜひ未完でもいいのでどんなものか見てみたいです。
167 :
NOBA:2005/04/27(水) 00:03:39 ID:6tZyrtzC
>>166 自分的にはR=(XV<-9)*2ってとこがいいなあなんて自分で思ってます。比較演算子は真なら1偽なら0を返すので
それを利用しました。ifでやるよりはマシなはずです。携帯BASICの
ソースは何度見てもよくできてんなー。の一言です。こんなん作れたらなー・・
168 :
14:2005/04/27(水) 20:54:34 ID:GPz50AbA
>>NOVA氏
比較演算子にそういう使い方があったなんて目から鱗です。使わせてもらいます〜
>>0.02氏
rmode使い方さっぱり分からないんです(´・ω・`)教えていただけると有り難いです。変数がわけワカメ
とかいいつつ無理矢理作った習作。実際使ってみても分からない…
src="アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ"
setfont("T") p=strheight
l=5
for i=0 to l x[i]=abs(rand)%width y[i]=abs(rand)%20 next color(0,0,0) frect(0,0,500,500)
label 0
lock() rmode(0,255,255) color(0,255,0) for i=0 to l text(strat(src,abs(rand)%55),x[i],y[i]*p) y[i]=y[i]+1 if y[i]*p>height then y[i]=0 x[i]=(abs(rand)%width)-20 endif next
color(150,150,150) rmode(1,0,235) frect(0,0,500,500)
if input(0)=keysoft1 then exit endif
unlock(0) goto 0
フォントサイズとか変数lを端末にあわせていじってください
…肝心なホッケーつくってねぇ…orz
169 :
0.02:2005/04/27(水) 22:35:05 ID:ShWiYA1+
同じくNOBA氏の比較演算で真(1)偽(0)取得、感動しました。
これを応用すれば自分のプログラムもいくつか短くできそう。
ウォールアドベンチャー短くしてageてみるかなぁ。
>>14氏
rmodeは俺もよくわからんとです…
前スレで、
> ソース見たらrmode()は何もしない設定になってた
みたいな事を見かけたんで、Renderのソースから削除したら
全然普通に動作したのでそのままにしてます(-_-;
むしろ俺が知りたいですよ…謎だrmode orz
そういえば、color(R,G,B)って
プログラムの作り方 に載ってないですな…意外
載ってなくても大体わかるけど;
170 :
NOBA:2005/04/28(木) 16:55:01 ID:GRan+V/m
rmodeはドコモの特に限られた機種でしか使えないようです。最初の値は
0:色の置き換え
1:色の加算
2:色の減算
次は描画先のピクセルの色が反映される比率。
最後が描画するピクセルの色が反映される比率
のことで一度設定するとそれ以降の描画に適応されるようです。
つまり通常の描画はrmode(0,255,255)(置き換え,反映率100%,反映率100%)
ということになります。半透明で描きたい時はrmode(1,128,128)とかってやれば良いと思います。
171 :
14:2005/04/29(金) 06:24:57 ID:8biM0ema
>>NOVA氏
詳しい解説ありがとうございます。なるほど、これで関数の使い方が分かりました。
けど、限られた機種にしか使えないなら、あまり使わない方がいいか…
結構面白い表現とかも出来るのに残念です
172 :
NOBA:2005/04/29(金) 18:19:50 ID:RVD01x6w
このスレってなんだかんだでいま三人しかいないね。どうする?
173 :
14:2005/04/29(金) 23:05:57 ID:8biM0ema
うーん、入りづらいふいんき(なryなのかも知れないですねぇ。
それに携帯の世代とBASIC打ち込んで使うとかしたことある世代とは少し離れているし…
そもそも最近は自分で作らなくても面白いものいっぱいありますからね、作ることを楽しみとする人以外は離れていってしまう。カナシイナ
まぁ、こんなこといっててもしょうがない。とりあえずageますか
締切に間に合いそうもなく、ただあたふたしている俺について
イ`
締切には間に合ってないけど、せっかく作ったので投下。
hs=load()soft1("タイトル")soft2("終了")label 0clear(0,0,width,height)text("air hockey",0,12)text("win : "+hs%100,0,24)
text("lose: "+hs/100,0,36)origin((width-120)/2,(height-120)/2)pm=0 pe=0 h=0while h=0m=44e=m dx=50dy=20mx=-2my=1p=0
text("Press any key...",12,60)clearinput()input()clear(-width/2,-height/2,width,12)while p=0lock()
clear(0,0,120,120)rect(0,0,119,95)line(60,0,60,95)arc(5,m,4,8)arc(110,e,4,8)arc(dx,dy,6,6)text("score: "+pm+" - "+pe,12,120)
unlock(0)s=scan if s=keysoft2 then exit endif if m>0 then m=m-(s=keyup)*2endif if m<88 then m=m+(s=keydown)*2endif
dx=dx+mx dy=dy+my h1=(dx<9)*(dy>m-4)*(dy<m+12) h2=(dx>104)*(dy>e-4)*(dy<e+12) ht=h1+h2
mx=mx-mx*ht*2+((s=keyright)-(s=keyleft))*h1+(rand%4-2)*h2 my=my-my*((dy<2)+(dy>88))*2+((s=keydown)-(s=keyup))*h1+(rand%4-2)*h2
e=e+((dy>e)-(dy<e))*2if abs(mx)>4then mx=4*((mx>0)*2-1)endif if abs(my)>4then my=4*((my>0)*2-1)endif p=(dx<0)-(dx>114)
if s=keysoft1 then p=1pe=99endif wend pe=pe+(p=1) pm=pm+(p=-1) h=(pe>14)+(pm>14)wend
hs=(hs%100+(h<0))%100+(hs/100+(h>0))%100*100save(hs)sleep(200)origin(0,0)goto 0
左側がプレイヤーのパッド。右は適当なコンピュータ。
ルールや挙動は典型的すぎるぐらいの15点先取エアホッケー。
上下キーでパッド移動。
ヒット時に方向キーが入っていればその方向に加減速。
勝敗数は記録されます。
タイトルに戻ると逃亡扱いで1敗です。
突貫工事のため(^^;終了では1敗にはなりません。
コンピュータはかなり適当なルーチン(というのもおこがましい)です。
上下に振られると激弱です。
グラフィックを処理し切れず、画面外にごみが残ることがあります。
N2051ではけっこう遅くて難しかったです。
N901iCではかなり早くて難しかったです。
この他の機種での動作確認はしてません。
何度か実行すると、iBASICの動作がもっさりしたりします。その場合はiBASICの再起動で戻ります。
とりあえずこんなとこです。
178 :
NOBA:2005/05/01(日) 15:38:39 ID:b5jcqLkA
とりあえず3作品だな。自分はどれがよかったか言っていこう。
ちなみに俺はちょっとアレだけど自分のに一票です。他のは俺の機種だと実行速度が遅いのとソースが二つになったからかな。
save()って変数を一つしか記憶できないんですか?
そうだよ
じゃあRPG作れないや(T_T)
複数保存を試みようとした奴のソースが前のほうにあるはず。
エアホッケー審査はどこにいったんだろう…
184 :
0.02:2005/05/08(日) 22:15:52 ID:XumfTzag
ギリギリまで待ったけど3作のみかあ…
うーん、やっぱNOBAさんには勝てないな。
グラフィック、アイデア、動作スピードがすごいです
独特の操作感覚が楽しかった
名無しさんの作品は…ごめんなさい動かなかったです…
パッドは動くけど跳ね返らない…
ただ、タイトル画面があるしかなりおしゃれなのはいいと思いました
自分の作品は荒削りだけど唯一アイテムの要素を取り入れたことが自慢です
振り返ってみて…かなり楽しい企画でしたので次回も楽しみです。
185 :
NOBA:2005/05/09(月) 00:02:15 ID:OwHIO9sk
確かに名無しさんのはデザインが良かったし、やった後ほんとにアプリの処理が遅くなりました(笑)。
0.0.2さんのもターボを使うとは思はなかったです。ただ二人とももう少しスピードアップできたかもしれないですね。
参加者増加を願って次はもっと簡単なお題がいいですかね?
作る暇がなくて参加できませんでした。ドッヘル作者です。
採点に疑問があるのですが、画像入れたら起動かなり遅くなりますよね。動作速度と起動速度は違うのかな…?
もし時間あれば次回は参加したいと思います。作品評価は諸事情により出来ないです。すいませんm(__)m
187 :
NOBA:2005/05/10(火) 16:17:14 ID:2ctRgWQQ
動作速度は実行中の速度ですから違います。起動が遅くても絵のデザインがよければ問題ないんじゃないんですか?
とにかく次回参加してくれたらうれしいです。みんなはお題はなにがいいのかな?
188 :
14:2005/05/10(火) 20:57:08 ID:dBZcrv3N
ども。結局つくらなかったチキンな14です(´・ω・`)
私も採点は控えさせていただきます。みなさんすばらしい出来でした。
次回のお題か…思い付きで電卓とか言ってみる
189 :
非通知さん@アプリ起動中:2005/05/10(火) 22:41:26 ID:EZ0bD9va
寧ろぐるぐるの色付きバージョン(どんな立体でもよし)
※注:立体は色付きで!
一応スローガンとして、
『みんなで携帯BASICの限界にチャレンジだ!!』
190 :
14:2005/05/10(火) 23:33:37 ID:dBZcrv3N
ぐるぐる改良
クリスタルに見える予定。変数rをいじってみよう
「激重クリスタルもどき」
w=width/2 h=height/2 soft1("exit") r=8 a=5 origin(w,h)
label 0
lock() color(0,0,0) frect(-w,-h,w*2,h*2)
for i=0 to 6 x[i]=cos(t+i*60)/3 y[i]=sin(t+i*60)/r next
color(c,c,200) c=c+a if c>150 or c<5 then a=-a endif
for m=-30 to 30 step 60 for k=0 to 5 line(x[k],y[k]+m,x[k+1],y[k+1]+m) next for l=0 to 5 line(x[l],y[l]+m,0,m*2) next next
for l=0 to 5 line(x[l],y[l]-30,x[l],y[l]+30) next
if scan=keysoft1 then exit endif t=t+2 unlock(0)
goto 0
191 :
14:2005/05/10(火) 23:48:56 ID:dBZcrv3N
>>189 楕円媒介変数で作れる立体は正n角柱・錐、またはそれらの混合。
ほかの立体も作れなくはない。ただ三角関数がもう一段増えて楽しいぐらいに重くなること必至。
三角関数多用&表示に大きな画面が必要。だから携帯が限られてしまい、万人参加のコンテストには不向きだと思う。
ってことで、これで許して(´・ω・`)
じゃんけんとかどうかな
アイデアと演出を見るて感じで
193 :
初心者百号:2005/05/11(水) 22:35:11 ID:SigyB9wZ
日が経つと発動する、プログラムを作るにはどうしたら良いのでしょうか?
194 :
非通知さん@アプリ起動中:2005/05/15(日) 17:42:36 ID:N5DZNN0r
上昇
じゃあ次のお題はワンキーゲームね
ワンキーゲームとは犬と猿が出てくるゲームのことですか?
…ボタンを一つしか使わないゲームだよ。One key
>>197 せっかくボケたのにマジレスしないでくれw
いや、ボケなのか?と思ったけどおもしろくなかったからよくわかんなかったんだ。すまんね
>>199 犬=ワン
猿=キー
ボケの解説をするのも何だけどw
ボケついでに言うと昔、猿と犬が出てくる「ワンキーゲーム」と
いう名前のゲームをポケコンのBASICで作ったことがある。
文字通り1つしかキーを使わないゲームだったりするw
どっちにしてもボケきれてないんじゃね?
お?おまいらおもしろい話で盛り上がっていますね。
204 :
201:2005/05/23(月) 17:16:14 ID:IXVk6lsp
誰も居ぬ(犬)
みんな去る(猿)
Wizardryっぽいの作ろうと思って、せこせこ書いてるけど、3Dマップすらむずかしい…
ってか重い…orz
206 :
非通知さん@アプリ起動中:2005/05/24(火) 20:28:08 ID:eCTjRYlD
期待(゚∀゚)
たまにアゲ
3Dマップならずっと前にあったよ。かなーりおもかたけど
インボリュート曲線
いろんなグラフがあるもんだ。
w=width/2h=height/2PJ=36000label 0lock()if scan=2then end endif J=S*sin(S)+cos(S)*360K=sin(S)*360-S*cos(S)S=S+10line(w+J/1800,h+K/1800,w+PJ/1800,h+PK/1800)PJ=J
PK=K
unlock(1)yield()goto 0
3Dうんこ
color(128,0,0)for X=36 to 1314step 9
rect(width/2+(sin(X*2)-sin(X*100/48))*2/5,X/10,5*X/328,1+X/328)next
input()
210 :
205:2005/05/25(水) 00:31:11 ID:J6T1a9X/
せっかくスレにきたので、ワンキーゲームつくってみました。
即席なんで、ソースが恐ろしく長いです(´・ω・`)
タイトル『ダルマさん転んだ』
#AA#
setfont("L") Z=strheight W=255 origin(width/2-Z*5,height/2-Z*5) soft2("終了")
label 00
clearinput()
color(W,W,W) frect(-Z*5,0,Z*20,Z*10) color(0,0,0) text("だるまさんがころんだ",0,Z*3) color(0,0,W) text("ボタンを押すと始まるよ",0,Z*5)
A=input() if A=keysoft2 then end endif
PX=0TJ=1TM=0
label 11
gc() clearinput()
if TM>29 then TJ=2 else TJ=1 endif
lock() color(W,W,W) frect(0,0,Z*10,Z*10) color(0,0,0)
for ZZ=1 to 5 text(P[PX%2][ZZ],(PX-12)*Z/6,Z*(3+ZZ)) text(T[TJ][ZZ],Z*15/2,Z*(3+ZZ)) next
text(substr(D,0,TM/3),Z*4,Z*3/2) text(substr(E,0,TM/3),Z,Z*5/2)
color(W,W,W) frect(-Z*5,0,Z*5,Z*10) frect(Z*10,0,Z*10,Z*5) frect(Z,Z*2,Z*3,Z) unlock(1)
A=input(1) if A=keysoft2 then goto 00 endif if A=keyselect then if TJ=2 then goto 22 endif PX=PX+1 if PX>30 then goto 33 endif endif
TM=TM+abs(rand%11) if TM>50 then TM=0 endif
goto 11
#勝敗#
211 :
205:2005/05/25(水) 00:32:04 ID:J6T1a9X/
タイトル『勝敗』
Label 22
color(0,0,0)text("Σ",(PX-10)*Z/6,Z*5)sleep(500)
lock()color(W,W,W)frect(0,0,Z*10,Z*3)color(0,0,0)text(L[abs(rand%3)],Z*6,Z*5/2)color(0,0,W)text("負けちゃった……",Z,Z*10)unlock(1)
sleep(2000)input()
goto 00
label 33
lock()color(W,W,W)frect(0,0,Z*10,Z*10)color(0,0,0)
for ZZ=1 to 5 text(P[2][ZZ],(PX-12)*Z/6,Z*(3+ZZ))text(T[0][ZZ],Z*15/2,Z*(3+ZZ))next
text("タッチしたぞ",Z,Z*3)text("ゴルァ!",Z*2,Z*4)color(W,0,0)text("あなたの勝ち!!",Z,Z*10)unlock(1)
sleep(2000)
input()
goto 00
212 :
205:2005/05/25(水) 00:35:55 ID:J6T1a9X/
タイトル『AA』
D="だるまさんが_____________"E="______ころんだ!!_______"
L[0]="プゲラッチョ"L[1]="ニヤニヤ"L[2]="ア、ウゴイタ!"
T[1][1]=" ∧_"T[1][2]="(/⊃"T[1][3]=" |"T[1][4]=" |"T[1][5]=" ∪ ̄"
T[2][1]=" ∧_"T[2][2]="(・∀・"T[2][3]=" |⊃"T[2][4]=" |"T[2][5]=" ∪ ̄"
T[0][1]=" ∧_"T[0][2]="(´・ω"T[0][3]=" |⊃"T[0][4]=" |"T[0][5]=" ∪ ̄"
P[0][1]=" ∧ ∧"P[0][2]=" (,゚Д゚)"P[0][3]=" ( つつ"P[0][4]=" 〜 _ヽ"P[0][5]=" )ノ `J"
P[1][1]=" ∧ ∧"P[1][2]=" (,゚Д゚)"P[1][3]=" / つ つ"P[1][4]="〜(_⌒ヽ"P[1][5]=" )ノ`J"
P[2][1]=" ∧∧"P[2][2]=" (,゚Д゚)"P[2][3]=" ⊂ つ"P[2][4]=" 〜 |"P[2][5]=" し`J"
213 :
205:2005/05/25(水) 00:44:55 ID:J6T1a9X/
〜遊び方〜
まんまダルマさんが転んだです。
ギコ猫を操作して右の奴にタッチして下さい。
決定ボタンを押すと一歩ずつ進むことができます。
動いてるところを見られたらアウトです。
でも、そんなに難しくないので、あっさりクリアできると思います。
214 :
205:2005/05/25(水) 01:30:02 ID:J6T1a9X/
あ、もしかしたら、機種によっては、動作がはやすぎるかもしれません。
その時は、
>>210の下の方にある、『abs(rand%11)』の数値を小さくしてみてください。ゲームスピードがゆっくりになるはずです。
WIZ LIKEはどのへんまでやったの?
216 :
205:2005/05/25(水) 06:32:18 ID:J6T1a9X/
まだ3Dダンジョンの部分を作ってます。他の部分(キャンプ、戦闘、町、イベントなど)は、ほとんど手付かずです。
一応3Dダンジョンの部分は、遅いながらも何とかなりそうな所まできました。
前スレものぞいてみようかな…なぜか落ちてないみたいだし。
217 :
205:2005/05/27(金) 00:44:11 ID:oCd7b6SV
3Dダンジョンを歩くやつです。
でも壁しかない上に、かなり重いです…。
タイトル『3D』
soft2("終了")W=255HO=3PX=1PY=1H[1][1]="北"H[1][3]=-1H[2][1]="東"H[2][2]=1H[3][1]="南"H[3][3]=1H[4][1]="西"H[4][2]=-1
MAPA=0000000000110111111111111111111001000100000100000010111011011101010101100010000101001011111111001101
MAPB=0011011001001001111100100110010111111111011001110100100010010011010111011110101001101100100110111011
for XY=0 to 9 for XX=0 to 9 MAP[XX*2+1][XY*2]=substr(MAPA,XY*10+XX,1)MAP[XX*2][XY*2+1]=substr(MAPB,XY*10+XX,1)next next
label 01
gc()#i##i2#
label 02
K=scan if K=keysoft2 then end endif if K>0 then goto 01 endif goto 02
218 :
205:2005/05/27(金) 00:47:38 ID:oCd7b6SV
タイトル『i』
if K=keydown then HO=HO+2 if HO>4 then HO=HO-4 endif elseif K=keyleft then HO=HO-1 if HO=0 then HO=4 endif elseif K=keyright then HO=HO+1 if HO=5 then HO=1 endif
elseif K=keyup and MAP[PX+H[HO][2]][PY+H[HO][3]]=1 then PX=PX+H[HO][2]*2 PY=PY+H[HO][3]*2 endif
X=H[HO][2]Y=H[HO][3]lock()color(0,0,0)frect(0,0,120,120)color(W,W,W)
for Z=0 to 2 if MAP[PX-Y*(Z-1)*2+X*5][PY+Y*5+X*(Z-1)*2]=0 then rect(24*(Z+1),48,24,24)endif next
if MAP[PX+Y+X*4][PY+Y*4-X]=0 then color(0,0,0)frect(36,36,12,48)color(W,W,W)line(36,36,48,48)line(36,36,36,84)line(48,48,48,72)line(36,84,48,72)endif
if MAP[PX-Y+X*4][PY+Y*4+X]=0 then color(0,0,0)frect(72,36,12,48)color(W,W,W)line(72,48,84,36)line(72,48,72,72)line(84,36,84,84)line(72,72,84,84)endif
219 :
205:2005/05/27(金) 00:49:33 ID:oCd7b6SV
タイトル『i2』for Z=0 to 2 if MAP[PX-Y*(Z-1)*2+X*3][PY+Y*3+X*(Z-1)*2]=0 then color(0,0,0)frect(Z*48-12,36,48,48)color(W,W,W)rect(Z*48-12,36,48,48)endif next
if MAP[PX+Y+X*2][PY+Y*2-X]=0 then color(0,0,0)frect(18,18,18,84)color(W,W,W)line(18,18,36,36)line(18,18,18,102)line(36,36,36,84) line(18,102,36,84)endif
if MAP[PX-Y+X*2][PY+Y*2+X]=0 then color(0,0,0)frect(84,18,18,84)color(W,W,W)line(84,36,102,18)line(84,36,84,84)line(102,18,102,102)line(84,84,102,102)endif
for Z=0 to 2 if MAP[PX-Y*(Z-1)*2+X][PY+Y+X*(Z-1)*2]=0 then color(0,0,0)frect(Z*84-66,18,84,84)color(W,W,W)rect(Z*84-66,18,84,84)endif next
if MAP[PX+Y][PY-X]=0 then color(0,0,0)frect(0,0,18,120)color(W,W,W)line(0,0,18,18)line(0,120,18,102)line(18,18,18,102)endif
if MAP[PX-Y][PY+X]=0 then color(0,0,0)frect(102,0,18,120)color(W,W,W)line(102,18,120,0)line(102,102,120,120)line(102,18,102,102)endif
color(W,W,W)frect(120,0,66,120)frect(-66,0,66,120)frect(0,120,120,60)color(0,0,0)text("向き["+H[HO][1]+"]座標["+PX/2+"."+PY/2+"]",0,120+ascent)unlock(1)
AGE
もしかして…前スレ落ちた?
>>221 980を越えたら24時間レスがないと落ちる
>>222 そうなのか…サンクス
色々勉強になったから、せめて1000になるまでは残っててほしかったな…、落ちる仕組みが分かっていれば、レスして落ちないようにできたのに…orz
ようやくネットがつながって,久々に来たけど,
Windows上で,画像ファイルを携帯Basicの画像にするソフトって誰か作ってる?
俺,途中まで作ってたけど,どうも忙しくてだめだ…….
暇を見てログ読みます.
225 :
非通知さん@アプリ起動中:2005/06/06(月) 22:13:13 ID:K+tsv0xA
囲碁つくって思ったけど対人シミュなら簡単だよね
FEとかゲームボーイウォーズみたいなやつ
226 :
0.02:2005/06/07(火) 20:55:36 ID:4PRMmlK+
お久しぶりです
FE作れる人まで出てきたのか…すごいなあ
最近カードゲームぽい要素を入れたRPG戦闘作ってます
出来たらうpしますねぃ
ところでプログラムコンテストはどうなりましたかね(^_^;
227 :
NOBA:2005/06/07(火) 23:11:55 ID:zEwBSshC
最近は携帯BASICのPhase2版を改造してました。多分、より使いやすくなってると思います。公開したらとってみてください。
携帯BASIC改みつけました!SFCaveとかすごい
乙です
229 :
ドッヘル:2005/06/11(土) 00:42:28 ID:rpCGYtwn
お久しぶりです。
NOBA氏改良乙であります。voda版もありますか?>改
ちょっと見つからないのですが、見つけたら参戦いたします(暇があれば…)
230 :
非通知さん@アプリ起動中:2005/06/11(土) 20:59:52 ID:ytsZdlg9
DoCoMo板はナインでしか?
231 :
非通知さん@アプリ起動中:2005/06/11(土) 21:00:28 ID:Lv6hWcze
232 :
非通知さん@アプリ起動中:2005/06/12(日) 13:11:50 ID:D+T/pp9K
gosubってどうゆうときに、どーやって使えばいいんですか?
Cでgotoを使うやつはプログラマ仲間に嫌われる??
■カラーチェッカー改
f=6soft1("RESET")soft2("QUIT")y=1w=width h=height p=5label 0lock()color(r,g,b)
frect(0,23,w,h)color(255,255,255)frect(0,25,w,14)color(0,0,0)text("R:"+r+" G:"+g+" B:"+b+" ±"+p,0,37)
unlock(1)s=scan if s=key0 then r=0g=0b=0elseif scan=keysoft2 then exit
elseif r+p<256and s=key1 then r=r+p elseif g+p<256and s=key2 then g=g+p elseif b+p<256and s=key3 then b=b+p
elseif r-p>-1and s=key4 then r=r-p elseif g-p>-1and s=key5 then g=g-p elseif b-p>-1and s=key6 then b=b-p#cc2#
235 :
0.02:2005/06/12(日) 20:42:29 ID:0bTKGAi3
■cc2
elseif p>0and s=keydown then p=p-1elseif s=keyup then p=p+1elseif s=keysoft1 then x=0y=1color(255,255,255)
frect(0,0,w,22)elseif s=keyast then r=abs(rand)%256g=abs(rand)%256b=abs(rand)%256
elseif s=keypound then color(r,g,b)text("■",f*x,y*11)x=x+1
if (x+1)*f>w then x=0y=y+1if y=3then y=1endif endif endif goto 0
上下キー 色増減幅変更
1-6キー RGB増減
* ランダム色
0 RGB=0(黒)
# 色プット
ソフト1 色プット欄リセット
ソフト2 終わり
236 :
NOBA:2005/06/14(火) 20:10:49 ID:vVrEbaEc
相変わらず人居ねーなーせっかく改造しても肝心のau使いがいなかった…
今の時代まぁドキュモが一番売れてるわけで
>>233 嫌われるって言うか,普通使わないんじゃない?
予備的にあるようなもんだし.
239 :
NOBA:2005/06/15(水) 23:51:22 ID:wlPZ5WKX
改だけど…へびにょろ
loadimg(A,"5,255,255,255,0,195,0,0,255,0,130,255,0,215,255,0,-1,8,8,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,2,2,2,2,1,0,1,2,0,2,2,3,3,1,1,2,2,2,2,4,3,1,1,2,2,3,4,4,3,1,1,3,3,3,3,3,3,1,0,1,1,1,1,1,1,0")
H=load()for(;M[IX=abs(rand)%16][IY=abs(rand)%16];)「」soft2("EXIT")Q=1M[KX=X=2][KY=Y=8]=S++label 0lock()A=input(0)
>>12if(A==64){end}elsif((A==1||A==8)&&Q!=0){Q=0R=(A==1)?-1:1}elsif((A==2||A==4)&&R!=0){R=0Q=A-3}ZX[S]=Q
ZY[S]=R
if(X==IX&&Y==IY){L++for(;M[IX=abs(rand)%16][IY=abs(rand)%16];)「」gc()}else{clear(KX*8,KY*8,8,8)M[KX][KY]=0KX=(KX+ZX[S-L]+16)%16KY=(KY+ZY[S-L]+16)%16disvar(ZX[S-L])disvar(ZY[S-L])}
if(M[X=(X+Q+16)%16][Y=(Y+R+16)%16]==0){M[X][Y]=S++}else{T="GAME OVER"}drawimg(A,IX*8,IY*8,0)col(0xFF8000+S)frect(X*8,Y*8,8,8)unlock(1)
if(T!=0){col(255)text(T,66,52,3)text(L+"てん",66,72,3)save(H=max(H,L))text("最高"+H+"てん",66,92,3)sleep(2000)end}goto 0
↑DoCoMoじゃ、ジャバロングエラーになるんだが…
241 :
NOBA:2005/06/16(木) 15:33:36 ID:NaycK3R5
改で作ったやつですからね。普通のでやる場合は専用の命令は使ってないから書き直せばできると思う。
今saveで複数保存をやろうとしているんですが…過去のをみても全然分かりません。
配列で各々のセーブデータを引き出すにはどうやったらよいのでしょうか?
243 :
14:2005/06/18(土) 02:31:19 ID:eHQ0/JUE
>>115と
>>122が既出の複数保存ルーチンだね。
実は前者は私がつくったんですけど、あれはデータを一つずつ,で区切って結合>保存、読出>分割で複数保存を達成してる
>>115を見たんですけど、訳分かりませんでした。
携帯BASICで7行プログラミング大会やらない?79文字×7行のやつ
詳細キボン
553文字以内でテトリスや圧縮プログラムを作るってやつです。ム板で前にやってたはず。ただし携帯BASICですからそんな難しいのはできないだろうけど
携帯BASなので100×100にしたほうがいいのでは?
10000文字?逆に多過ぎないか?
ごめん…〇TL
100×10だった。
で偉そうな事言っておいてあつかましいんですが…
scanを二秒読み込んだら、
つぎのscan読み込みまで三秒必要みたいなことはどうしたら出来るんでしょうか?
252 :
14:2005/06/19(日) 09:26:24 ID:zDo/oKy5
1000あったら結構大がかりなものも作れるかも。
どのくらいの大きさか実感してみたかったからぐるぐる最適化してみたら300ちょいだった。
forと論理演算子うまく使えば結構減量できるな
「軽量最適化ぐるぐる319byte」
w=60 h=w soft1("exit") r=8 origin(w,h-25) label 0 lock() clear(-w,-h+25,w*2,h*2)
for i=0 to 3 x[i]=cos(t+i*90)/3 y[i]=sin(t+i*90)/r line(x[i],y[i],x[i],y[i]+50) next
for j=0 to 50 step 50 for k=0 to 3 line(x[k],y[k]+j,x[k+1-4*(k=3)],y[k+1-4*(k=3)]+j) next next
if scan=keysoft1 then exit endif t=t+2 unlock(0) goto 0
ここは質問しても答えが返ってこないスレです
>>254 消えろよ、お前。この板に相応しくない。
キャリア?毎に命令文が違ってるのがなぁ…
あとやっぱりプログラムの交換もちょっとめんどいよね…。
せめて、誰でも簡単にテキストボックスが扱えるような、携帯からでも入れる掲示板があれば…
257 :
NOBA:2005/06/23(木) 07:17:36 ID:gDYUGW9c
今作ってる。まぁ、1000文字専用だけど…
258 :
256:2005/06/23(木) 21:42:01 ID:bl33cN30
>>257 乙です。
今までのレスを見ると、機種によっては1000文字(半角で?)までしかコピーできないのもあるみたいだから、ちょうどいいかと。
なんだかんだ言って、他力本願だな、俺…orz
ここは糞スレですか?
260 :
NOBA:2005/06/25(土) 01:06:26 ID:WrxohdwJ
↑そのうp板に書き込めないんだけど。
262 :
NOBA:2005/06/25(土) 13:15:42 ID:QOeKwVRq
早速バグありました…。すいません。直しときました
テキストボックスが出ません。直してくださいお願いします
264 :
非通知さん@アプリ起動中:2005/06/26(日) 15:23:07 ID:cJAKmPOd
ちゃんと出来ますた。ありがとうございマスタ。
265 :
非通知さん@アプリ起動中:2005/06/27(月) 18:09:49 ID:TwbTpazr
携帯ベーシックで
>>251みたいなことできるんですか?
よくわかんないけどできないんじゃない?
267 :
非通知さん@アプリ起動中:2005/06/28(火) 22:14:49 ID:OTW++uhS0
V3G対応おながいします
Willcomにしたいけど,携帯Basicに引き留められてる感じ.
残念だが無いだろう。最近の機種はアプリが作りづらいからな〜アプリで見たらDoCoMoが一番か
270 :
非通知さん@アプリ起動中:2005/06/29(水) 18:35:29 ID:MSKsBqQ+O
271 :
NOBA:2005/06/29(水) 23:01:42 ID:ta5g7UYuO
ソースアップ板使われてね〜…前やってたダンジョンプロジェクトとかやりやすくなると思うんだけど
たまにはage
またなんかつくろかな
273 :
0.02:2005/07/03(日) 22:01:09 ID:guSSqjI5O
■ばんのうライト
soft2("MODE")label 0onlight()
if input(59000)and keysoft2 then soft2("OFF")goto 2endif
goto 0label 2color(255,0,0)frect(0,0,240,300)onlight()
if input(500)and keysoft2 then exit endif
offlight()sleep(500)goto 2
274 :
NOBA:2005/07/03(日) 22:38:10 ID:eOOQmvimO
1000文字でテトリスって無理かね?今度やってみようかな…
てかさぁこのスレ終わり
276 :
非通知さん@アプリ起動中:2005/07/06(水) 11:52:48 ID:pg38Tu/BO
278 :
非通知さん@アプリ起動中:2005/07/08(金) 00:15:38 ID:iRWWw/CNO
label 0
if scan=key**** then **** input(2000)endif
goto 0
試してないがこういう事か?
休眠させると困るというなら操作系だけ別スレで走らせるとか
>>278 すいません。
休眠するというか、キーを何秒間か読み込んだら、キーを離して、またキーを押したときに
作動するようにしたいんです
時間内にボタンを押せば成功
決定キーで操作
やめるにはソフト2を押し続け
soft2("長押終")label 0soft1(s+"/"+c)c=c+1clear(0,0,width,height)text("まだだ…気を抜くな",0,12)
sleep(abs(rand)%5000+2000)
text("よし、2秒以内に押せ!",20,30)
if input(2000)and keyselect then goto 1elseif scan=keysoft2 then exit endif
text("失敗…",20,50)sleep(2000)goto 0
label 1text("成功!",20,50)s=s+1sleep(2000)goto 0
読み込んだりボタンを離したりがどんなことを指すのかいまいちわからない(;´Д`)
どんなゲームを作りたいの?
スマソ
こっちで頼む
ちなみに決定キー以外を押すと失敗扱い
ソフト1のガイド部分に成功率(成功数/挑戦数)が表示される
soft2("長押終")label 0soft1(s+"/"+c)c=c+1clear(0,0,width,height)text("まだだ…気を抜くな",0,12)
sleep(abs(rand)%5000+2000)
lock()text("よし、2秒以内に押せ!",20,30)unlock(1)clearinput()
if scan=keysoft2 then exit elseif input(2000)and keyselect then goto 1endif
text("失敗…",20,50)sleep(2000)goto 0
label 1text("成功!",20,50)s=s+1sleep(2000)goto 0
282 :
非通知さん@アプリ起動中:2005/07/09(土) 11:39:20 ID:tBQkf74ZO
スーパーマリオワールドの、ジャンプを実現したいのです。
それならば、地面についているか否かの判定をした方がいいと思う。
もし段差を作りたい場合とか、機能拡張が楽だからね
どうしても、と言うならやっぱり別スレッドで操作系を走らせるのがイイかも。
操作系だけ休眠させて、本体ではジャンプの処理。
でもそれだと操作系とうまく同期が取れなかった場合に、空中ジャンプができてしまうことがあるかも。
過去にNOBAさんがどっとあくしょん!というジャンプゲームを作ってたと思うんだけど…参考になると思う。
284 :
非通知さん@アプリ起動中:2005/07/09(土) 16:07:10 ID:tBQkf74ZO
別スレって#どっと#みたいにやるんですか?
thread("操作系ソース名","適当に変数名をあてがう")
→thread("キースレッド","kyth")
こんな感じだったと思う
threadのところに来ると、指定ソースが平行して起動する
その分、携帯BASICの負担は大きくなり、もっさりの原因にもなるが
キー操作系くらいなら影響も少ないかも
あとは…操作系と本体で共通の変数情報を扱う場合、変数名は大文字の英字にしないとダメ
操作系側でボタンを押すとAが0から1になる、
それを本体側で参照して反映したい場合など
286 :
NOBA:2005/07/10(日) 09:48:53 ID:f+JsMIa6O
アップ板にテトリスあげました。
287 :
↑:2005/07/11(月) 01:19:55 ID:7Q2oOF6JO
そのアップ板だけど携帯だとコピれない。
288 :
NOBA:2005/07/11(月) 07:11:55 ID:I53vw+HCO
機種はなんですか?
NOBAさんのソースアップ板は基本Au用なのかな
DoCoMoのi-modeブラウザだとテキストエリアは表示されない…
なぜかはわからないんだけどuic掲示板とかのテキストエリアは表示される…
さてと、べーしっ君さん携帯BASICのバージョンアップをまだまだ待ち続けるぞ(´・ω・`)
290 :
NOBA:2005/07/11(月) 13:17:46 ID:I53vw+HCO
ドコモか…まさか512バイトまでしか入力できないとかじゃないですよね?<TEXTAREA>はドコモでも使えるはずなんですが…
291 :
非通知さん@アプリ起動中:2005/07/11(月) 13:48:29 ID:7Q2oOF6JO
細かいことは分かりませんが機種はN900iです
俺のD901iも表示されなかった。
293 :
非通知さん@アプリ起動中:2005/07/11(月) 14:44:07 ID:7Q2oOF6JO
で質問なんですが…配列って
十個ぐらいしか扱えないのですか?
ちょっと試してみただけだけど、
1.有効なform内(どうやら<form action="">でokっぽい)に入れる
2.内部の特殊文字はちゃんと処理する
で表示できるっぽいよ。(手元のN901iCにて確認)
特に前者が重要っぽい。後者だけ処理しても表示できなかったから。
295 :
NOBA:2005/07/11(月) 18:56:40 ID:UAEru3UW0
知らなかった…。一応やってみたけどうまくいってる?
N901iC、表示できるようになったのを確認しました。
ただ、特殊文字の処理がなされてないような。。。
機種によっては読み込み容量の問題が出るとは思いますが、
< >は< >に、&は&にきちんと処理したほうがよいのでは?
基本的に、端末のIMEが読み込んだときにはちゃんと1文字になるはずですし。
<蛇足>
dammyじゃなくてdummy。
</蛇足>
ミスった。。。
○ < >は< >に、&は&に。
俺のD901はまだ見れないよ〜(ToT)
299 :
NOBA:2005/07/11(月) 21:19:28 ID:I53vw+HCO
特殊文字すら表示できないんですか?ドコモって…
じゃあ記号系は全部アウトなんですか?
300 :
非通知さん@アプリ起動中:2005/07/11(月) 21:22:19 ID:7Q2oOF6JO
N900iP900iはOKであります
D901ではまったく見えない状態です。
最初と同じ
>>299 いや、別に処理しなくても表示できてるみたいだけどね。
ただ、こういうのはちゃんと処理してやるのがベターじゃないかな、ってだけの話。
303 :
一応報告…:2005/07/12(火) 06:52:05 ID:4S4idwF/O
N2102Vでは、ちゃんとテキストボックスが表示されるようになりました(・∀・)
304 :
NOBA:2005/07/12(火) 07:14:55 ID:eiamMdLaO
だいたい大丈夫みたいですね。テトリスはどうですか?
テトリス激しくモッサリだねw
306 :
非通知さん@アプリ起動中:2005/07/12(火) 20:54:38 ID:NT2K6g7wO
今キー読取りの実験したんだけど…同時キー習得って2つしか出来ないんですね…
オイ返事はナインかい
テトリスは…ごめん、俺D900iだけど512文字までしかコピれなかったorz
キー取得は…DoCoMoなら仕様。SHTで斜め移動しながら弾撃てない、とか。
他社ケータイも似たようなもんじゃないかな
べーしっ君さん、もう見てくれてないのかな…
ぜひNOBAさんのEZp2版と互換できるのを作って欲しいんだけど(´・ω・`)
あと…セーブ関数増加とかリクエストは諸々あるのだが(以下ry)としておきま
>>307 そんなのみんなもう知ってるからだよ。付け加えるとキーの相性によっては3つまで受け付けるよ。
310 :
非通知さん@アプリ起動中:2005/07/16(土) 00:07:16 ID:09SbaHcOO
>>308 バージョンアップは
高速化が最優先だな
あとはそなたが言った通り、セーブの件だな。
ゴメンサゲ忘れたm(__)m
特定の組み合わせって例えば何ですか?
それは機種によって違うと思うからわかんないけど、そんなに気にすることじゃないと思う。
いやどこもじゃダメだろ。今試したけど一通りもみっから無かった。
またドコモか…中途半端だよ。ドコモは、
いやDoCoMo最強!!Kタ-------凸(-_-メ)----!
今日は海の日
確かに1.5倍という数値は妥当ですね。
実機はN900iですが、携帯BAS+で顕著なスピードうpはみられませんでした。
322 :
非通知さん@アプリ起動中:2005/07/20(水) 01:29:08 ID:v7x+F8y1O
A=abs(rand)%100+1で、今の数値が2だとすると次はかならず、101>A、0<Aの状態のままで、
A>2もしくはA<2、要するに前の数値以外の数値を取るようにするにはどうしたらいいのでしょうか?
インデックスを使ってみるとか
abs(rand)を通るたびにB=B+1するようにしてはどうだろう
label 0
B=B+1
A[B]=abs(rand)%100+1
if A[B]=A[B-1]then goto 0endif
描画処理〜
それともビンゴマシーンみたいに一度出た数は出ないようにしたいのか?
それなら
label 0
A=abs(rand)%100+1
if B[A]=1then goto 0endif
B[A]=1
描画処理〜
でどうかな
>>323 有難うございました。
下のが使えました。
ビンゴゲームというか、椅子取りゲームですね。
と思ったら。今実験したら、三回目に同じ数値が出てきました(T_T)
それは作りが悪いのでは?
>>325 いっぺんフローチャートなり、あるいは日本語でもいいけど、
とにかくプログラムがどう動いているか逐一書き出してみることをオススメする。
その際、項目は可能な限り細かくばらして書くこと。
「既出数字以外の乱数をだす」なんてまとめて書いたら意味ないからな。
328 :
328:2005/07/20(水) 14:15:49 ID:pVJt7ROG0
こんなのは?
s="0123456789"
for i=0to 9
n=abs(rand)%(10-i)
v[i]=strat(s,n)
s=substr(s,0,n)+substr(s,n+1,10-i)
next
これなら10回の繰り返しで確実に0〜9の異なる乱数が得られると思うけど
329 :
325:2005/07/21(木) 02:39:28 ID:PzD+wxfWO
遅レスすいません。
とりあえず自己解決しました。御騒がせしてすいませんでした。
三角関数をわかってればこんな図形も描ける。
「花」
color(255,0,255)origin(66,72)label 1lock()clear(-51,-51,102,102)for T=G to G+288step 72for I=41to 140step 4line(0,0,cos(T+I+180)*sin(I)/(200+abs(I-90)*2),sin(T+I+180)*sin(I)/(200+abs(I-90)*2))next next G=G+20unlock(1)if input(0)>0then end endif goto 1
sleep(100)これを一つ目のスレッドでやると何故かもう一方のスレッドでも反映してしまいます。
どうしてでしょうか?
>>331 すまん、いろいろ試したが分からんかった…
sleep(a1)って全スレッドで実行するもんなのかな?そのスレッドのみだと思ったんだが…
●メイン
thread("サブ","sub")label 0lock()clear(0,0,100,12)a=a+1text(a,0,12)unlock(1)goto 0
●サブ
label 1if input()and keyselect then text("sub th.停止中",0,24)sleep(3000)clear(0,13,120,12)elseif input()and keysoft2 then exit endif goto 1
もっかい試してみる
サブにいろいろ付けてみたが正常だった。
●サブ
soft2("QUIT")label 1K=scan if K=keyselect then y=y+3origin(0,y)color(250,0,0)
text("sub th.停止中",0,24)sleep(3000)clear(0,13,120,12)elseif K=keysoft2 then exit endif yield()goto 1
色と描画原点はそのスレッドのみで反映したぞ。もちろんsleep(a1)も。
携帯BASIC+で確認。
一回ソース晒してみたらみんなも添削とかアドバイスとかしやすいかと思われ
しかし携帯BASIC+ってD900iで使うとシャア専用くらい速いな
334 :
非通知さん@アプリ起動中:2005/07/27(水) 13:45:29 ID:MzPRojPaO
まさかjoin()で回すとやばとかですか?
相手が動きだすのを待っててやるとは、おまいって実は優しいんだな。
join()は確か、その命令にきた時点で指定スレッド(仮にA)を起動し
Aが終了(プログラムが途切れるかkill()でスレッドAを指定)するまでメインスレッドを《休眠》させるとかだった気が。多分。
うーむ、そりゃメインスレッドも止まって見えると思われ…
今からでも遅くない、組み直すんだ(っД`)
どうでもいいが…join使うなんて高度な技使いまつね…俺使ったことないorz
ラベルとゴートゥーの文を使うより処理速度が若干早くなるんでジョインを使っていました。
確かに言われてみればある意味優しいですよねww
スレッドが終了するまで待機って、sleep()も…単純ミスでしたOTL
スレ汚しすいませんでした
ドンジャラみたいなの作ってみませんか
決めること
・テーマ
・デザイン、レイアウト
・ルール
作るもの
・基本ルーチン
・牌(絵かテキストか)
・役
339 :
非通知さん@アプリ起動中:2005/08/05(金) 21:38:47 ID:i9wSnMOJO
リバーシのルーチン作って皆で戦わせないか?
まずは少しでも形が見えればみんなも乗ると思う。もう少しつっこんだとこまで決めちゃった方がいいかと
おなじみハノイの塔。SPALMで作成。A,B,C3つの塔がありM枚の円盤をAからCへ移します。ただし小さな円盤の上に大きな円盤は置けない。というのを自動でやります。再帰処理の勉強にでもどうぞ
M=6
for(i=1;i<M+1;i++){frect(0,144-i*4,40-i,4)P[0][i-1]=i}input()
T(N[0]=M,0,1,2)
input()func T(A,B,C,D){
A[++L]=A
B[L]=B
C[L]=C
D[L]=D
if(A[L]==1){
P(B[L],D[L])
}else{
T(A[L]-1,B[L],D[L],C[L])
L--
P(B[L],D[L])
T(A[L]-1,C[L],B[L],D[L])
L--
}
}
func P(fr,to){lock()clear(fr*44,144-N[fr]*4,44,4)P[to][N[to]++]=P[fr][--N[fr]]P[fr][N[fr]]=0frect(to*44,144-N[to]*4,40-P[to][N[to]-1],4)unlock(1)}
>>341 SPALMが公開されてないのに…意味ないだろ
30×25のフロアに3〜4個の部屋を作り各部屋を通路でつなげたようなマップを自動生成したいのですが高速なアルゴリズムが思いつきません。アイディアのある人はいますか?いたら教えてください。
SPALM用
loadimg(H,"6,0,0,0,40,0,0,80,0,0,160,0,0,210,0,0,255,0,256,0,12,12,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,2,2,2,2,1,1,0,0,0,1,1,2,3,3,3,3,2,1,1,0,0,1,2,3,4,4,4,4,3,2,1
,0,1,2,3,4,4,5,5,4,4,3,2,1,1,2,3,4,5,5,5,5,4,3,2,1,1,2,3,4,5,5,5,5,4,3,2,1,1,2,3,4,4,5,5,4,4,3,2,1,0,1,2,3,4,4,4,4,3,2,1,0,0,1,1,2,3,3,3,3,2,1,1,0,0,0,1,1,2,2,2,2,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0")
lock()for(;I<9;I++){makeimg(A[I],112,36)trgt(A[I])origin(56,18)frect(-66,-72,132,144)for(A=0,B=B-5;A>-8;A--){drawimg(H,cos(A*45+B)/2,sin(A*45+B)/8,3)}}
trgt(off)frect(0,0,width,height)unlock(0)label 0drawimg(A[C++%9],width/2,height/2,3)if(scan){end}goto 0
ちょい改造。RPGの魔法とかに使ってくれ
改行は自分で消してね
loadimg(H,"6,0,0,0,40,40,40,80,80,80,160,160,160,210,210,210,255,255,255,0,12,12,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,2,2,2,2,1,1,0,0,0,1,1,2,3,3,3,3,2,1,1,0,0,1,2,
3,4,4,4,4,3,2,1,0,1,2,3,4,4,5,5,4,4,3,2,1,1,2,3,4,5,5,5,5,4,3,2,1,1,2,3,4,5,5,5,5,4,3,2,1,1,2,3,4,4,5,5,4,4,3,2,1,0,1,2,3,4,4,4,4,3,2,1,0,0,1,1,2,3,3,3,3,2,1,1,0,0,0,1,1,2,2,2,2,1
,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0")lock()for(;I<9;I++){makeimg(A[I],width,36)gc()trgt(A[I])origin(width/2,18)for(A=0,B=B-5;A>-8;A--){drawimg(H,cos(A*45+B)/2,sin(A*45+B)/8,3)}}
trgt(off)frect(0,0,width,height)clip(0,height/2-18,width,36)label 0lock()clear(0,height/2-18,width,36)drawimg(A[++C%9],width/2,height/2+P=P-(C>71),3)if(scan||C>120){end}unlock(1)goto 0
trgt()これは使わないでくれ。iアプリとの互換性がなくなる
「light」
soft2("Exit")
label 0
a=10
x=20
origin(0,0)
color(0,0,0)
frect(0,0,255,255)
origin(120,0)
y=0
p=rand%x
q=rand%x
label 1
#light1#
label 2
#light2#
「light1」
k=a+abs(rand)%8
color(196,98,196)
line(p-2,y,q-2,y+k)
line(p+1,y,q+1,y+k)
color(255,196,255)
line(p,y,q,y+k)
p=rand%x
y=y+k
if input(0) and keysoft2 then exit endif
if y>128 then x=10 endif
goto 2
「light2」
k=a+abs(rand)%8
color(196,98,196)
line(q-1,y,p-1,y+k)
line(q+2,y,p+2,y+k)
color(255,196,255)
line(q,y,p,y+k)
q=rand%x
y=y+k
if input(0) and keysoft2 then exit endif
if y>255 then goto 0 else goto 1 endif
以前から作ってみたかった落雷プログラムです
改良したら、もうちょいリアルな雷になりそう
350 :
NOBA:2005/08/13(土) 15:33:16 ID:6A4ZYucjO
なんとか1000文字に詰めたSPALM用リバーシです
`="の番です"_="そこには置けません"soft1("パス")soft2("終")@(M,"黒","白")origin(width/2-64,0)label 1for(T=E=a=0;a<8;a++){copy(B,0,B[a],0,8)}B[3][3]=B[4][4]=1B[4][3]=B[3][4]=2
col(0x8000)frect(0,0,128,128)col(0)for(a=0;a<9;a++){line(0,a<<4,128,a<<4)line(a<<4,0,a<<4,128)}for(a=0;a<4;a++){col((a<3&a>0)*0xFFFFFF)farc(51+(a%2)*16,51+(a/2)*16,11,11)}
label 0lock()col(0)rect(X<<4,Y<<4,16,16)if(64==A=input(0)
>>12){end}elsif(A&2){X=X-(0<X)}elsif(A&4){X=X+(7>X)}if(A&1){Y=Y-(0<Y)}elsif(A&8){Y=Y+(7>Y)}elsif(A==16){if(B[X][Y]){T=_}else{
for(OK=i=0;i<9;i++){i==4&&i++;H=U+1P=X Q=Y C(i%3-1,i/3-1)}if(_!=T=OK?M[U=!U].`:_;){if(++E==60){for(a=0;a<64;T[B[a%8][a++/8]]++){}T=M[T[0]>T[1]]."の勝ち"}}}}elsif(A==32){T=M[U=!U].`}col(0xC0FF)rect(X<<4,Y<<4,16,16)
unlock(1)if(T){col(0)text(T,0,129,0)clearkey()input()clear(0,129,128,25)if(strat(T,2)=="勝"){goto 1}T=0}goto 0func C(x,y){while(B[P=P+x][Q=Q+y]+H==3){}if(abs(P-X)>1|abs(Q-Y)>1&&B[P][Q]==H){col((H-1)*0xFFFFFF)
while(X!=P||Y!=Q){B[P=P-x][Q=Q-y]=H farc(P*16+OK=3,3+Q*16,11,11)}}}
351 :
NOBA:2005/08/13(土) 15:50:20 ID:6A4ZYucjO
所々間違えてた…修正版&短くした
`="の番です"_="そこには置けません"soft1("パス")soft2("EXIT")@(M,"黒","白")origin(width/2-64,0)label 1for(G=T=E=a=0;a<8;a++){copy(B,0,B[a],0,8)}B[3][3]=B[4][4]=1B[4][3]=B[3][4]=2
col(0x8000)frect(0,0,128,128)col(0)for(a=0;a<9;a++){line(0,a<<4,128,a<<4)line(a<<4,0,a<<4,128)}for(a=0;a<4;a++){col((a<3&a>0)*0xFFFFFF)farc(51+(a%2)*16,51+(a/2)*16,11,11)}
label 0lock()col(0)rect(X<<4,Y<<4,16,16)if(64==A=input(0)
>>12){end}X=X-(A&2&&0<X)+(A&4&&7>X)Y=Y-(A&1&&0<Y)+(A&8&&7>Y)if(A==16){if(B[X][Y]){T=_}else{for(OK=i=0;i<9;i++){i==4&&i++;H=U+1P=X
Q=Y C(i%3-1,i/3-1)}if(_!=T=OK?M[U=!U].`:_;){if(++E==60){for(a=0;a<64;T[B[a%8][a++/8]]++){}G=T=M[T[2]>T[1]]."の勝ち"}}}}elsif(A==32){T=M[U=!U].`}col(0xC0FF)rect(X<<4,Y<<4,16,16)unlock(1)
if(T){col(0)text(T,0,129,0)clearkey()input()clear(0,129,128,25)if(G){goto 1}T=0}goto 0func C(x,y){while(B[P=P+x][Q=Q+y]+H==3){}if(abs(P-X)>1|abs(Q-Y)>1&&B[P][Q]==H){col((H-1)*0xFFFFFF)
while(X!=P||Y!=Q){B[P=P-x][Q=Q-y]=H farc(P*16+OK=3,3+Q*16,11,11)}}}
352 :
NOBA:2005/08/14(日) 17:32:01 ID:7UXuTy6XO
☆AI対戦型ロボットバトル「ロボ魂」☆
ふたつのプログラムを戦わせるプログラムです。キー操作は禁止。AIはP1とP2で、自分がどっちなのかは変数jを見るとわかります。
j=0→P1
j=1→P2
戦い方は4つの関数を呼び出し移動,回転,弾発射,シールドを使い分けて戦います。またHPは初期で10000ありますが移動やシールドでもHPが減ります。
☆関数☆
I(kaku,kyori)…kaku度にkyoriだけ進む。またHPからkyoriの2乗ずつ引かれる。
R(kaku)…kakuだけ砲頭を回す。
F(num)…弾を発射。弾は3発まで撃てるが、画面外に消えるまでは撃てない。弾は当たると200のダメージになる。撃つ弾番号をnumで指定する
S()…呼び出す度にシールドのオン・オフを切り替える。ただしシールドを張っている間は毎回10ずつHPが引かれ、ダメージを40%に減らせる
☆プログラムの決まり☆
本体で使われている変数は使えません。ただし、参照だけなら可能です。敵の位置などによって動きを変えられます。主な変数は下です
E[]…HP
T[]…向き(度)
X[]Y[]…座標
BX[j.0〜2]BY[j.0〜2]…弾の座標
S[]…シールドのON・OFF
弾の座標は字数節約のためプレイヤー番号と弾番号を文字列連結したものをindexとします。
ほんとはもっといろいろつける予定でしたが処理速度とめんどくささのためにやめました。その結果オセロに続きこれも1000文字に収まりました。いろいろAI考えてみてください。
353 :
NOBA:2005/08/14(日) 17:36:03 ID:7UXuTy6XO
「ロボ魂」
w=width h=height r=w/20setfont("L")text("ロボ魂!!",w/2,h/4,3)setfont("S")text("PUSH START",w/2,h*3/4,3)input()E[0]=E[1]=10000@(T,0,180)@(X,w/4,w*3/4)@(Y,h/2,h/2)label 0lock()col(0)
clear(j=i=0,0,w,h)#P1#j=1#P2#while(i<2){E2[i]=E[i]for(j=0;j<3;j++){if(BY[i.j]){arc(BX[i.j]=BX[i.j]+(cos(BT[i.j])*r
>>7),BY[i.j]=BY[i.j]+(sin(BT[i.j])*r
>>7),r/3,r/3)BY[i.j]=BY[i.j]*(BY[i.j]>0&&BY[i.j]<h&&BX[i.j]>0&&BX[i.j]<w)
if(pow(BX[i.j]-X[!i],2)+pow(BY[i.j]-Y[!i],2)<r*r*4/9){E[!i]=E[!i]-200BY[i.j]=0C[!i]=0xFF0000}}}i++}for(j=0;j<2;j++){if(S[j]){C[j]=C[j]|S[j]*255if(i=E2[j]-E[j]){E[j]=E2[j]-i*2/5}E[j]=E[j]-10}col(C[j])arc(X[j]-r/2,Y[j]-r/2,r,(C[j]?C[j]=0:0;)+r)
text(E[j],j*w/2,0,0)}unlock(1)if(E[0]<1|E[1]<1||scan){text((E[0]<E[1])+1."の勝ち",w/2,h/2,3)input()end}goto 0func F(n){if(!BY[j.n]){BT[j.n]=T[j]BX[j.n]=X[j]BY[j.n]=Y[j]E[j]--}}func R(n){T[j]=T[j]+n}
func I(n,O){O>40?O=40:0;if(w>X[j]&&X[j]>0){X[j]=X[j]+cos(n)*O/100}if(h>Y[j]&&Y[j]>0){Y[j]=Y[j]+sin(n)*O/100}E[j]=E[j]-O*O}func S(){S[j]=!S[j]}
354 :
非通知さん@アプリ起動中:2005/08/18(木) 17:19:39 ID:ul4KxiCAO
srand()これって何の命令ですか?
355 :
非通知さん@アプリ起動中:2005/08/21(日) 00:54:56 ID:7BHr9hcp0
ランダムに種を与えてよりランダムになるようにする命令。あんま意味無い
だれもいないお(つД`)
淋しいお。
誰かおもしろそうなプロジェクト立ててくれないかな…(´・ω・`)
SPALMでローグライクなんてどう?
本当の気持ち
たのむお。みんなで何か創ろうお(つД`)
氷河期なんてもうやだお。みんな何処いっちゃったんだお…・。゚(つД`)゚。・
うちvodaで、新しいBASICのプログラムとかについていけなかった。
携帯BASICはいくつかプログラムを保存してるせいで、一つのプロジェクト作るにも時間かかりすぎて…
結果、スレは覗いてるけどプログラムは放置って感じになってます(;´д`)ゴメンヨ
なんつーか暇だし、なんかつくるなら手伝うべ
ビットシフトってなんですか?
何人か集まりそうだしなんかみんなでつくろうか
>>361 数値をnビットずらすこと。言い換えると2のn乗倍の値で数値を割ったりかけたりすることです。
普通に/とか*でやるよりは早い
>>362 その言葉を待ってた!!
俺もローグライク作りたい。よって参戦したい。
時々かくかくと動くのは仕様か、それと部屋も四つしかなくね?
それにしてもGJ!だぜ
かくかくはしないはずです。部屋は位置と大きさが微妙に変わるだけで大まかな位置も数も変わりません。通路にいたっては毎回同じです。まぁ、これが限界かと。
あと、ちなみにどれくらいなめらかに動いてますか?
いや途中でカクカクするぜ。スクロールは確かに早いが、プレイヤーの歩くスピードが途中でかわるのがなぁ…
370 :
368:2005/08/27(土) 17:31:20 ID:SEtwGPJ/O
もしかしてはじっこに行ったときスピードが変わるやつですか?だったらどうにもなりません。はじっこではスクロール処理が無い分速いですから
func A(a,b){arc(a,b,5,5)A==b+a}
こういう式をA(a,b)の形で書き出して、
例えばA(20,50)A(50,20)と、やると図形は描画されるんだが…A==b+aが反映されない。誰かなんでだか教えてくれれぇぇぇ〜(゚Д`)
ちなみに端の方で遅くなった。
373 :
368:2005/08/27(土) 19:33:17 ID:SEtwGPJ/O
>>371 A=b+aじゃない?==じゃ等値比較だけで代入がされないから。
>>372 ますます意味がわからない…
それでもできなかった
375 :
368:2005/08/27(土) 22:17:49 ID:SEtwGPJ/O
え?じゃあなにがしたいんですか?
なんかまた人が少なくなったな
そもそもSPALMの存在に気づいてない椰子が多いのでは
ところでcol()って赤を出すときはcol(255000000)って書くのか?
おまいそんなのもわからんのか、でわわたすぃが教えてしんぜよう‥
実は私にもわからない…
てのは嘘でcol(0xFF0000) だしょ?汗
col(0xRRGGBB)、か…ありがとん
16進しか指定できないんだな
しかしいろいろ機能拡張してて楽しいな
bgm使いたい
おぬしは何処も?ユーザーかね?
別に10進でもできるけど…
16711680
そりやとメンドクセーダニィ
DoCoMoだよ
悪評高きD900i
そろそろ機種変か
まぁわいもN900iだし、かわりないだすぅー
ローグライクみんなで再始動だにぃー。SPALMでツクルダニィー。
みんなの携帯だとアップ板にあるアクションてゲーム何FPSぐらい出てる?ちなみに俺のは7.5強位なんだけど、遅い?
なんか創ろうぜ
画像を使った奴がいいです
90氏後輪願う。そしてローグライクをパワーアップさせようじゃないか。
誰もいないんかいっ
(υ゚ω゚υ)
みんないい加減ローグに飽きたからじゃない?
あきたとかないからっ(笑
SPALMやるぞゴラ
そして誰もいなくなった
SH700iでiBASIC動かせている人居ます?
やってみたいなあと思って落としたけど
起動するときに「αエラーが発生しました」とでて起動できません。
自分もしてみたい・・・
398 :
396:2005/09/04(日) 22:18:46 ID:4EGDyWuR0
いいですね。
とりあえずがんばって色々試したりして覚えてみます!
でもまた何でiBASICなんですか?
iBASIC大好き人間だったんだけど、ソフト二つも保存すりゃ、
容量満タンになるんで萎えてたら、携帯BASICってのがあるの知った。
明日から休み時間とか使ってなんか作ってみよう。
目標は弾幕
さらにSPALMと言う手もあるぞ、まあそんなにBASIC が好きなら別だが。。
402 :
400:2005/09/07(水) 17:34:34 ID:zNOr3uv80
>>401 あのあとスレざくっとよんで、試してみました。
関数定義できたり、{ }でくくったりで使いやすいので移行ー。
そしていざ自機狙い弾を作ろうとしたら、平方根も求められないし、tanの逆(横と縦から角度)も無いのね・・・
仕方ないから16方向の角度算出関数を自作。判定値は定数(おは
しばらくはどこまで重くなってもゲームになるか検討しながら3way弾とかいろいろやってみようと思う。
403 :
400:2005/09/07(水) 17:35:37 ID:zNOr3uv80
func at16(ah,aw){
ah2=max(abs(ah),1) aw2=max(abs(aw),1)
if((0<=ah)&&(0<=aw)){t1=ah2*100/aw2 t2=0
}elsif((0<=ah)&&(aw<0)){t1=aw2*100/ah2 t2=90
}elsif((ah<0)&&(aw<0)){t1=ah2*100/aw2 t2=180
}else{t1=aw2*100/ah2 t2=270
}
if(t1<=19){re=t2
}elsif(t1<=62){re=t2+22
}elsif(t1<=148){re=t2+45
}elsif(t1<=470){re=t2+67
}else{re=t2+90
}
return re
}
>>402 君は高校生かい?
ちなみに俺は浪人生
_| ̄|〇
このスレには俺等しかいない気がする…
>>404 です。 ほうw勉強がんばって!
俺もそう思う。俺自身携帯basicのサイトみるまで(スレ以前に)この板を知らなかったorz
ひっそり活動するっぺさ。
昔シューティング作ろうと思って作ったこっちに弾撃ってくるプログラム。よく考えればatan無くてもできる。
label 2A=B=-20C=abs(rand)%100+16D=abs(rand)%90+16H=rand%5I=rand%5if(!H){H=2}if(!I){I=-3}X=64Y=120label 0lock()col(0)frect(0,0,132,144)if(abs(X-C)<16&&abs(Y-D)<16){goto 1}G=scan
if(G==16384&&X<121){X=X+4}if(G==8192&&X>8){X=X-4}if(G==4096&&Y>8){Y=Y-4}if(G==32768&&Y<133){Y=Y+4}if(G==2){end}C=C+H
D=D+I
if(abs(66-C)>57){H=-H}if(abs(72-D)>63){I=-I}col(0xFFFFFF)frect(X-8,Y-8,16,16)col(255)frect(C-8,D-8,16,16)if(abs(66-A/5)>66||abs(72-B/5)>72){A=C*5B=D*5E=(X*5-A)/((abs(X*5-A)+abs(Y*5-B))/20)F=20-abs(E)
if(Y-B/5<0){F=-F}}else{A=A+E B=B+F col(0xFF8000)frect(A/5-1,B/5-1,3,3)if(abs(X-A/5)<9&&abs(Y-B/5)<9){goto 1}}unlock(1)goto 0label 1unlock(1)col(255<<16)text("GAMEOVER",42,66,32)input(100)goto 2
G==は
G&に
したほうがいいと思うが‥どうだ?
それにしても中々のできGJ!!
>>406 意味の理解にしばらくかかったorz。
総移動距離中の横の割合を求めて、それを4倍[px]。それで残りの分を縦の移動速度 ってことですね。
うあーっ インチキ座標系っぽいのにちゃんと見える!すげぇ!!そして3人目だわーい
>>407 やっぱ斜め移動で速度1.4倍が熱いよね(違う
上下移動の画面はみ出し防止判定って、
やっぱキー入力と次の移動で出ないかのandとるべきですか?
キー判定の後はみだしぶん押し込める ってやってるけど・・・
はみ出し防止判定って何?てかドットの粕みたいなもの?
>>410 x、y、横幅、縦幅を持つ矩形の判定が、一定領域から出ないようにするときのチェック。
自機が画面からはみ出さないようにする処理。同じく、弾がはみ出たかどうか判定する処理。
移動後にはみ出てたら座標を戻す方法か、移動したらはみ出るかどうかをチェックしてから移動する方法か迷う。
そこまで玉が飛ばないようにすればいいんじゃねぇww?
>>412 その処理のやり方だよw
@
if(x+vx>w){ die() }else{ x=x+vx }
A
x=x+vx if(x>w){ die() }
どっちがよいのか・・・んで、さらに、カーソルキーで操作する処理になると
@
if( 『右が押されている』 ){
if(x+vx>w){
die()
}else{ x=x+vx }
}
A
if( 『右が押されている』 ){
x=x+vx
}
if(x>w){
die()
}
どっちが軽いのか。もっと重要な軽量化部分もあるかもしれんが。
elseって意外に重いんじゃねぇの?
最初のは
(x=x+xv)>w&&die();
次のは
(『右が押されている』&&x=x+vx,x>w)&&die();
てやればそこそこ軽い。更にこれをどっかの式に影響無く含めるとより軽い。
俺なら、
x = x + (([右押] & (x < [右端])) - ([左押] & (x > [左端]))) * [移動量]
を毎回のループに入れるな。
&は*のが軽いならそっちで。
毎回の計算量が一定=フレームレートがばらつかないという利点もある。
行きすぎたら押し戻すやり方は、移動量が変動する場合に意味があるな。
>>415 >>417 最初、へ?と思ったが・・・・ すげえええええっ 比較式にしてスルーさせるのか!
これ他の言語でも仕様しだいで使えそうだ。勉強になるぅー。ありがとうございます。
次の作品に活用してみようと思いまっすっすすすす
blib て名前で保存してください @
func at32(ah,aw){
ah2=max(abs(ah),1) aw2=max(abs(aw),1) if((0<=ah)&&(0<=aw)){t1=ah2*100/aw2
t2=0}elsif((0<=ah)&&(aw<0)){t1=aw2*100/ah2
t2=90}elsif((ah<0)&&(aw<0)){t1=ah2*100/aw2 t2=180}else{t1=aw2*100/ah2 t2=270}
if(t1<=9){re=t2}elsif(t1<=29){re=t2+11}elsif(t1<=51){re=t2+22}elsif(t1<=78){re=t2+33}elsif(t1<=119){re=t2+45}elsif(t1<=173){re=t2+56}elsif(t1<=290){re=t2+67}elsif(t1<=814){re=t2+78}else{re=t2+90
}
return re}
func make(an,ax,ay,avx,avy){
re=-1 for(ii=0;ii<B;ii++){if(bn[ii]==0){bn[ii]=an bx[ii]=ax by[ii]=ay bvx[ii]=avx bvy[ii]=avy)re=ii break}}return re
}
func die(ai){
bn[ai]=0 bx[ai]=0 by[ai]=0 bvx[ai]=0 bvy[ai]=0 bc[ai]=0 bi[ai]=0
}
func gfar(){
switch(abs(rand)%4){case 0: tmx=abs(rand)%(W*10-S) tmy=-S break; case 1: tmx=abs(rand)%(W*10-S) tmy=H*10 break; case 2: tmy=abs(rand)%(H*10-S) tmx=-S break; case 3: tmy=abs(rand)%(H*10-S) tmx=W*10 break;}
R[0]=tmx R[1]=tmy
}
blib 2
func shot0100(){
gfar() tmi=make(1,R[0],R[1],0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma)*D*5/100 bvy[tmi]=sin(tma)*D*5/100 bc[tmi]=0xDD5555
}
func shot0101(ax,ay){
tmi=make(1,ax,ay,0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma)*D*10/100 bvy[tmi]=sin(tma)*D*10/100 bc[tmi]=0xAA44AA
}
func shot0102(ax,ay){
tmi=make(1,ax,ay,0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma-20)*D*7/100 bvy[tmi]=sin(tma-20)*D*7/100 bc[tmi]=0xCC8844
tmi=make(1,ax,ay,0,0) bvx[tmi]=cos(tma+20)*D*7/100 bvy[tmi]=sin(tma+20)*D*7/100 bc[tmi]=0xCC8844}
func shot0103(ax,ay){
tmi=make(1,ax,ay,0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma-30)*D*6/100 bvy[tmi]=sin(tma-30)*D*6/100 bc[tmi]=0xAAAA44
tmi=make(1,ax,ay,0,0) bvx[tmi]=cos(tma)*D*6/100 bvy[tmi]=sin(tma)*D*6/100 bc[tmi]=0xAAAA44
tmi=make(1,ax,ay,0,0) bvx[tmi]=cos(tma+30)*D*6/100 bvy[tmi]=sin(tma+30)*D*6/100 bc[tmi]=0xAAAA44
}
func shot0200(){
gfar() tmi=make(2,R[0],R[1],0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma)*D*4/100 bvy[tmi]=sin(tma)*D*4/100 bc[tmi]=0x5555DD
}
func shot0300(){
gfar() tmi=make(3,R[0],R[1],0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma)*D*3/100 bvy[tmi]=sin(tma)*D*3/100 bc[tmi]=0x44AAAA
}
func shot0400(){
gfar() tmi=make(4,R[0],R[1],0,0) tma=at32(my-by[tmi],mx-bx[tmi]) bvx[tmi]=cos(tma)*D*2/100 bvy[tmi]=sin(tma)*D*2/100 bc[tmi]=0x55DD55
}
blib 3 汚いソースだ
goto "esc"
label m0 return
label m1
bx[i]=bx[i]+bvx[i] by[i]=by[i]+bvy[i] if((bx[i]<-S)||(by[i]<-S)||(bx[i]>W*10)||(by[i]>H*10)){die(i)}
gosub 444
return
label m2
bx[i]=bx[i]+bvx[i] by[i]=by[i]+bvy[i] bi[i]=bi[i]+D l=150 if(l<=bi[i] && bi[i]<l+D){shot0101(bx[i],by[i]) die(i)}
if((bx[i]<-S)||(by[i]<-S)||(bx[i]>W*10)||(by[i]>H*10)){die(i)}
gosub 444
return
label m3
bx[i]=bx[i]+bvx[i] by[i]=by[i]+bvy[i] bi[i]=bi[i]+D l=250 if(l<=bi[i] && bi[i]<l+D){shot0102(bx[i],by[i]) die(i)}
if((bx[i]<-S)||(by[i]<-S)||(bx[i]>W*10)||(by[i]>H*10)){die(i)}
gosub 444
return
label m4
bx[i]=bx[i]+bvx[i] by[i]=by[i]+bvy[i] bi[i]=bi[i]+D l=350 if(l<=bi[i] && bi[i]<l+D){shot0103(bx[i],by[i]) die(i)}
if((bx[i]<-S)||(by[i]<-S)||(bx[i]>W*10)||(by[i]>H*10)){die(i)}
gosub 444
return
label 444
if((bx[i]<mx+S)&&(by[i]<my+S)&&(bx[i]+S>mx)&&(by[i]+S>my)){O=1}
return
label esc
本体 (ファイル名はなんでも)
label 2
#blib#
soft2("Exit") W=width H=height S=100 D=10 M=80 B=12 C=0 E=50 P=0 O=0 mx=W*10/2 my=H*10/2 @(bac,0,0,0,0) for(i=0;i<B;i++){die(i) }
label 0
omx=mx omy=my K=scan if(K & 262144){end} if((K & 4096)&&(0<(my-M))){my=my-M} if((K & 32768)&&((my+M)<H*10-S)){my=my+M}
if((K & 8192)&&(0<(mx-M))){mx=mx-M} if((K & 16384)&&((mx+M)<W*10-S)){mx=mx+M} if((omx==mx)&&(omy==my)){P++}
for(i=0;i<B;i++){gosub "m".bn[i]}if(O>0){goto 3}for(i=0;i<4;i++){bac[i]=bac[i]+abs(rand)%D} C++ if(C==E){C=0 D++ if(D==20){goto 506}}
if(bac[0]>=100){shot0100() bac[0]=0 P=P+10}if(bac[1]>=150){shot0200() bac[1]=0 P=P+20}if(bac[2]>=250){shot0300() bac[2]=0 P=P+50}if(bac[3]>=400){shot0400() bac[3]=0 P=P+100}
lock()
col(0) frect(0,0,W,H)col(0xFFFFFF) rect(mx/10,my/10,S/10,S/10)for(i=0;i<B;i++){if(bn[i]>0){ col(bc[i]) rect(bx[i]/10,by[i]/10,S/10,S/10) }}
col(0xFFFFFF)text("レベル".(D-9)."/10",W-10,10,24) text("スコア".P,W-10,30,24) rect(10,10,E*2,10) frect(10,10,C*2,10)
unlock(0)
goto 0
label 3
K=scan if(K & 262144){end}if(K & 65536){goto 2}
lock()
col(0) frect(0,0,W,H)col(0xFFFFFF) rect(mx/10,my/10,S/10,S/10) for(i=0;i<B;i++){if(bn[i]>0){ col(bc[i]) rect(bx[i]/10,by[i]/10,S/10,S/10) }}
col(0xFFFFFF)text("レベル".(D-9)."/10",W-10,10,24) text("スコア".P,W-10,30,24)text("ゲームオーバー",10,30,20)
unlock(0)
goto 3
label 506
K=scan if(K & 262144){end}if(K & 65536){goto 2}
lock()
col(0) frect(0,0,W,H)col(0xFFFFFF) rect(mx/10,my/10,S/10,S/10)for(i=0;i<B;i++){if(bn[i]>0){ col(bc[i]) rect(bx[i]/10,by[i]/10,S/10,S/10) }}
col(0xFFFFFF)text("CLEAR!",W-10,10,24) text("スコア".P,W-10,30,24)text("おめでとう!",10,30,20)
unlock(0)
goto 506
がんばってクリアしてみてください。FPS2ぐらいな悪寒がしますが、なんとか操作してwwww
速度の話してるわりにはなんじゃこの無駄は!と 思う人もいると思いますが、 はやく遊びたかった&公開したかった ので すいません。
高速化はあとまわ(死) 自作アークたんは32方向にグレードアップ。
しかし、パソコンに送ってみたら気付いた。なんだこのテキスト量・・・携帯ってけっこうパワーあるんだな・・・
糞オソスwwwでもアイディアとしてはいいね!
いきなり分裂するアークとか、いきなりスピードアップする奴とか結構面白いが、サクサクできないのが難点か‥
遅いでしょwwwwけっこう面白い嬉しすww
静止中はスコアが貰えるので狙ってみてくださいな。俺クリアできないけど。
B=12ってところを減らすと圧倒的に早くなるんだけど、これ最大弾数なんだよね・・・w
確かにwwBをこれ以上増やしたらoutofmemoryが出ちまいそうだもんなwwwちなみレベルは8迄いった
>>425 うむww出なくても鬼スローwwおwあとちょっとでクリア!
2Way+3Wayではさまれたところに高速がくると死ねる
俺の単純ミスはww自キャラ見失ってワロス(^Д^)
という教訓をもとに自キャラはfrectにしたWW
俺もなんか作ろうかな‥
確かに見失うかもw
おー 作りましょうーw スレに活気を。そしてネタがない。
ヒント:爆弾ww
プログラム来い!
第2回プログラムコンテスト!
・SPALMもしくはBASICシリーズでのプログラムのコンテストをします。
・今回のお題はマリオ型アクションゲーム。ブロックの中を進んでいくタイプならOK
・プログラムはKURIさんのところのアップ板かここに書き込んで投稿。できればKURIさんのとこが間違いがないのでそっちにアップして欲しい。
・期限は2週間後。がんばって作ろう
433 :
非通知さん@アプリ起動中:2005/09/13(火) 22:33:42 ID:yK9Tr/+k0
>>432 お 爆弾思いつかないところに。
・・・壁の多いテーマだ がんばろう
ここまでできたぞ!マップ切り替え型で行くことにした。
H=8makeimg(B,128,128)for(;I<H;I++){makeimg(B[I],16,128)trgt(B[I])for(i=0;i<8;i++){if(M[I+i*H]='!abs(rand%4)'strat("0000000000001110000100000010000010000000010000000000010011111111",I+i*H)){frect(0,i<<4,16,16)}}}
gc()trgt(B)for(i=0;i<8;i++){drawimg(B[i],i<<4,0,0)}trgt(off)soft1("EXIT")label 0lock()if(16==A=scan
>>13){end}(j||t=0)&&++t>8&&t=j=0;drawimg(B,0,0,0)col(255<<16)x=X
>>4y=Y
>>4 frect(X=X+(((A&2)&&(X%16||!M[x+1+y*H]&&(Y%16==0||!M[x+1+H+y*H])))-((A&1)&&X>0&&(X%16||!M[x-1+y*H]&&(Y%16==0||!M[x-1+H+y*H]))))*4,(x=X
>>4,Y=Y+(J=(!j&&112>Y&&(Y%16||!M[x+y*H+H]&&(X%16==0||!M[x+y*H+H+1]))))*4
-(j=(!J&&(A&8)&&Y%16||!M[x+y*H-H]&&(X%16==0||!M[x+y*H-H+1])))*4),16,16)unlock(1)goto 0
435 :
非通知さん@アプリ起動中:2005/09/15(木) 17:10:25 ID:n51eXeG10
>>434 すげー。なんだこの軽さ。しかもほとんどの構文が論理式だけで書いてあって解読無理す。レベル高いな・・・。
どうやってもこの処理速度に勝てないから、部分再描画式にしてなんとか速度うp
地形当たり判定はまだ作ってない。そしてマップ切り替え被ったw
どーすればおもしろいか考え中。そもそもマリオってどこが面白いのか文にできん。
なんとかマップ切り替えとか、敵の処理とかまで出来たけどさすがにちょっと遅くなってきた…。
あとはボスとステージデータと画像だな。データ量の割にはすぐにクリアできてしまうかもしれないので、
色々考える必要がありそうだ。うぅ…頭イタイ、、、
437 :
ヒマな静観派:2005/09/16(金) 19:20:30 ID:DEuxO6wTO
>>422 今更だが弾幕おもしろい。携帯では動きそうにないからPCで見たが確かにかなり長いソースで軽く5kバイト越えてた。
そんでスコープごとにタブ入れたりreturnに;つけたりしてみたら、なんだこれ…
まるでPC用のプログラム。これが携帯で動くのだから最近の携帯の性能には驚かされる。
atanもよくできていてPCのエミュで動かしたらちょうどいいスピードで軽くハマった。422氏のこれからが楽しみになった。
422氏のように用意された文を駆使する人もいるかと思えば434氏のように大半を演算子で作って最低限の命令に抑える人もいてプログラマの個性があるのは見てておもしろい。
これからもこのスレでいろいろな特徴あるプログラマ(キャラ)が生まれて欲しいと思う今日この頃…
やっとこのスレ見つけた…
昔はよくプログラム組んで書き込んだものだ。ぐるぐるとかMultiSAVEとか…
>>436 ボス、敵って!マジすか。マップ処理と移動だけでゲームにするつもりですwwww
>>437 うほ。反応嬉しい。
今作で演算子構文しようとしてるんですが、判定がもーいみわからん
結局ifと&&がごちゃごちゃになってますw
>>438 >>432コンテスト中らしいです。参加しませう!
>>ALL
画面サイズって、自分の携帯にいっぱいいっぱいで作っていいん?
P900ivなんだけど、みんな503対応で作ってる人多いですよね?
安心しろ。俺なんてP901iだ!
ちなみにheight、widthを使いながら書くと互換性が生まれる…
って知ってるかwwとりあえず俺はスクロール型を作るわ
>>440 おぉ 一個上でつか height widthは
>>422で使ったけど、
マップの当たり判定は拡大縮小すると、小数部分で誤差がでそうなのでやらなかった。
自機の判定、ピクセルですよwwwwwww
スクロールかー。すごいなぁ。あのー、タイルが半分だけでる時とかの処理を想像してやめたというw
>>442 うおぉぉぉ 軽さが驚異的だ・・・
しかも踏む処理orz すごすぎる。
難易度も、クリアがおもろいぐらいでお手ごろ!
444 :
434:2005/09/17(土) 20:44:42 ID:/Mx4qoaDO
今見て気づいたけどステージ少なくなかった…?直しといたんでヨロ
>あのー、タイルが半分だけでる時とかの処理を想像してやめたというw
substrで一つ先のマップチップを読み込ませることで平気でない?
>>444 あ なんか話と食い違うと思ったらそういうことか。地上と地下だっ!
むむむ。この少ないデータ量で請ったマップを・・・ 全部罠にはまったぜwww
読み込み画面をうまく使ってるなー。。。
クリア後に和みな雰囲気の楽しさが。いいねこれ。
>>445 戻りも考えると、両端に一個多く読むだけか?そういわれると簡単な気も・・・
でも、改行のない配列で、ある列だけを各行から読むってのが難しそう・・・
3連休は「ちまっとした暇」がないから携帯プログラミングはしない俺www
447 :
434:2005/09/17(土) 22:48:26 ID:/Mx4qoaDO
自分的には2面の3マップ目で上からクリアする方法と4マップ目で敵を踏んでクリアするところがアクションぽくて好き
まあ、厳しいけどもうちょい高速化してみる
せっかくトリップつけたのにいきなり名前書き忘れたw
2-3上から行けたのか!今5回ぐらい挑戦してやっとできたw
上から行くと楽じゃのう。
高速化がんばってください。あと敵の動きが不思議。落下と往復だけなのに、トリッキーに見える。
お題とは違うけど、SPALM習作、MultiSAVE移植版
一元配列でSAVEで複数保存を可能にする。
保存したい内容をMS[i]に代入した後、MS([保存要素数])呼び出し。
読込はML()で。保存されている要素数が帰り値になってる。保存内容がML[i]に格納されている
携帯B+より格段に早くなってるなぁ…
MultiSAVE
t=tick;@(MS,"000","111","222","333")
MS(4)
n=ML()
for(i=0;i<n;i++){text(ML[i],20,12*i+12,3)} text(tick-t."msec",50,24,0);input();end
func MS(MN){mf=MS[0].",";for(i=1;i<MN;i++){mf=mf.MS[i].","};save(mf)}
func ML(){ls=load();tn=strlen(ls);bn=-1;bfi=-1;
for(i=0;i<tn;i++){if(strat(ls,i)==","){bn=bn+1;ML[bn]=substr(ls,bfi+1,i-bfi-1);bfi=i}}
return bn+1}
>>448 やっぱ高速化無理でした…。
変わりにクッパステージを増やしてクッパも作ったがあんまおもろくならなかったから
俺の作品はアップ版にあるやつで完成ということで
>>449 セミコロンは出来るだけ使わないで式も簡単にすればまだまだ高速化できる。
bn=-1;bfi=-1;は、、、
bn=bfi=-1
bn=bn+1;は、、、
bn++とか
そしてアクションを作って!
>>450 アクションって何ですか?
あと、>>と~の使い方もよくわからないとです…
ご教授願います
>>451 今プログラムコンテストのお題がマリオ型アクションだからさ。
>>と~はビット演算だからそれを理解すればいい。
コンピュータは2進で数字を表現してる。そしてSPALMでは32BITの数値を扱えるわけで…
00000000000000000000000000000001
1の時はこうなってるが
>>1すると各BITが右に一個ズレて全部0になる。これを10進で書くと
1/2=0
てこと
~はBITの0と1が反転するから
1111111…0となって-2になる。
後は自分で調べな
おまいらsubstr(a1,a2,a3)で
a3を抜かすと最初から全部読み込むはずなのに、読み込まないような伎ガスるんだが、こんなの俺だけか?
間違えだ
a2から最後までだった
ていうかみんなゲーム作ってんの?俺はそれが気になってしょうがないんだが…
>>455 俺は作ってるよ。マップ生成と当たり判定、移動(ジャンプも) までできた。
これからゲーム要素を突っ込めば完成。3連休に仕上げようと。
解した
キー入力がうまく行かない…
input()とscanの使い方教えて下さい
携帯BASICと変わりすぎてて分かんない
@(a,"赤","青","緑","黄","愛","友情","青春","季節")
label 0
clear(0,0,width,12)
b=abs(rand)%4
b2=abs(rand)%4+4
c=abs(rand)%101
text(a[b]."色の".a[b2].c."パーセント",0,0,0)
if(input()==1){exit}endif
goto 0
俺も違いは良く知らんけど
K=scan if(K and 1){ ' おされとるがな! ' }
みたいにキーコードとandして、Trueなら押されてるってことになるよ
キーコードのor値が入ってるから、==だと同時押しがウムムな結果に。
inputとscanの違いはこれでわかるはず。
while(scan!=1){lock()clear(0,0,60,50)text(input(0),0,0,0)text(scan,0,16,0)unlock(1)}
0キーで終了ね
お二方ありがとうございました
おかげでなんとかキー取得出来るようになりました
exit命令がendになってるのに気づかなかった…
あと、SPALMは二つのキー取得が簡単にできますね
@(a,"赤","青","緑","黄","愛","友情","青春","季節")
label 0
b=abs(rand)%4
b2=abs(rand)%4+4
c=abs(rand)%101
text(a[b]."色の".a[b2].c."パーセント!",0,0,0)
if(scan!=1){lock()text("キーバッファ".input(0),0,50,0)unlock(1)text("スキャン".scan,0,66,0)}else{end}endif input()
clear(0,0,width,100)
goto 0
また分からない時はご教授願います
@()命令でかなり使いやすいね
でももしかして@(a[0],0,1,2,3,4)
とかのインデックス付き変数は入れられないのかな
上の例でいえばb=a[0][2]でbに2が代入されるような事ができなかったんですが(;´Д`)
>>462 ポインタとかの参照型が無いみたいだから、二次元配列も使えないんじゃね?
俺もそれは困った。マップで・・・
できるよ。copyでも
funcについてなんですが
func ****(a,b){a++ b++} と
func ****(){a++ b++} では何が違ってくるんですか?
引数ってよくわからない…
関数名([引数])から勉強しなおすべきなのか
copy()使ったけどやはり無理みたいです…。
copy(a1,a2,a3,a4,a5)のa5もわからない…
読み込みたいのはこれ↓
'キャラ
@(a[0],(´∀`),モナー,2,2)
@(a[1],(´・ω・`),ショボーン,5,2)
@(a[2],(・∀・),ジエン,0,2)
'出撃設定
@(b,0,2)
'ユニット枠読込
for(u=0;u<2;u++){for(s=0;s<3;s++){c[u][s]=a[b[u]][s]text(c[u][s],u*60,s*16,0)}}
>>465 (a,b)の所に(2,3)と代入したとする、{a++ b++}が2++3++となる
copyは一回ぐらいしか使ったことないから分からない。
func A(a,b){a++b++}
はA(5,8)と呼び出したとするとaに5、bに8が代入されa++b++でaという変数は6に、bという変数は9になる。
copy(A[0],2,B,0,9)
これはA[0][2]からA[0][10]までの値をB[0]からB[8]までにコピーすること
'キャラ'
@(a[0],"(´∀`)","モナー",2,2)
@(a[1],"(´・ω・`)","ショボーン",5,2)
@(a[2],"(・∀・)","ジエン",0,2)
'出撃設定'
@(b,0,2)
'ユニット枠読込'
for(u=0;u<2;u++){
for(s=0;s<3;s++){
text(c[u][s]=a[u*2][s],u*60,s*16,0)
}
}でいけるかと思ったがだめだね
メモリを仮想的に作ってみればいいと思った。
@(all,"(´∀`)","モナー",2,2,"(´・ω・`)","ショボーン",5,2,"(・∀・)","ジエン
",0,2)
@(pos,0,4,8)
for(u=0;u<3;u++){for(s=0;s<4;s++){
cell=all[pos[u]+s]
text(cell,u*70,s*16,0)
}}
input()
動作したけど、コレじゃダメ?
あと、引数ってのは、その関数の中でのその変数の値をきめられる。
ただし、funcが定義された位置(つまりfuncの外全部)でa、bを初期化してる場合、引数が来ないときは、
関数からa、bを参照できるから、結果的に同じことになっちゃうだけ。
ようは、func foo(a,b){}の中での、a、bは、fooの中のローカル変数で、外部からは参照できないのに対して、(読み込まれるのはfooの外のa、b)
func foo2(){}の中から、a、bを参照した場合は、foo2の外のローカル変数だから、変更すれば外部から参照したとき変更されてる。
ってのが一般的な考え方・・・かな?
皆さん丁寧にありがとうm(__)m
@(CH,"ガンダム",130,12,7,30,1,"ガンキャノン",135,15,1,22,2,"ガンタンク",140,10,1,8,3,"ジム",100,8,0,18,1,"コアファイター",50,4,5,40,2,"コアブースター",80,5,1,48,2,"ガンダムMC",150,17,10,40,1,
"ザクI",60,10,0,18,1,"ザクII",80,10,0,20,2,"ザクIIS",130,13,7,40,1,"グフ",115,11,0,23,2,"ドム",135,12,0,33,2,"リックドム",130,12,1,34,2,"ギャン",130,15,0,35,1,
"ゲルググ",120,10,0,35,2,"エルメス",140,5,10,30,4,"ジオング",180,14,10,38,3,"ズゴックS",120,10,8,30,2,"ゲルググS",135,10,9,35,2,"ビグ・ザム",200,9,0,18,4)
@(ST,0,1,2,3,9,10,11,17,18,19)
soft1("")soft2("QUIT")
text("機体名",0,0,0)text("耐久力",0,12,0)text("攻撃力",0,24,0)text("NT値",0,36,0)text("機動力",0,48,0)text("射程",6,60,0)
label 0lock()clear(42,0,100,100)for(LL=0;LL<6;LL++){text(CH[(ST[L])*6+LL],42,12*LL,0)}unlock(1)input()if(scan==16384&L<9){L++}elsif(scan==8192&0<L){L--}elsif(scan==262144){end}goto 0
読み込みは無事成功しました
関数も詳しい解説ありがとうございます
あとは頑張ってゲームになるよう頑張ります
>>470 おぉ〜。うまくいってよかったっす。がんばってー!
@(A[0],0,1,2,3,4,5)
二次元配列使えるようになったっぽい?
まだ試してないけど作者GJ!
switchについて質問があります
switch(A[B][C]){
case 1|3:D[B][C]="はずれ"break;
case 2:D[B][C]="正解"break;}
switchの条件式は変数の中身を見るだけでも成立する?
caseの数値はorしてもいい?
defaultはなくてもいい?
switchの効果的な使い方とは?
どなたか解説お願いします
>switchの条件式は変数の中身を見るだけでも成立する?
変数一つでもそれは式なので成立する。
>caseの数値はorしてもいい?
caseで使える値は数値単体か文字列単体のみ、演算はできない。
>defaultはなくてもいい?
OK
>switchの効果的な使い方とは?
if-elseでいくつもの数値などと比較するよりはテーブルジャンプしてるswitchの方が速い。
というだけなので使いどころは少ないかもしれない。
ありがとうございますー
orが使えないのは残念だけど高速実行というのはいいなあ
こないだのデータ読み込みと同じように、必要な画像データだけ読み出すルーチンを作ってるんで
時間短縮になりそうでいいですね
…今思いついたけどcaseはbreakしないと次も実行してしまうって事は
case 1:;
case 3:命令 break;
とかは使えますか?orのかわりにはなりそう…
case 1:
case 3:
…
break;
ていうのはあり。switch文てJAVAとかでもそういう命令だからね。
おー、やっぱりそれでいけるんだ…どうもです
case 1:のあとの;はいらないんですね(´・ω・`)breakにつけるのか…
センターまでの残り時間わかるやつ作って。
秒単位でお願い。
まだ時間関数拡張されてないからなぁ
そういえばプログラムコンテスト終わってたね…結局俺だけだったか。
ほひょい 誰も触れないと思ったらw
最後の日月にこってり忘れて放置プレイ。
できてたところまで明日うpするわ。
タイトルのとこが空白でリンク開けなかったorz
soft1("リセット") soft2("終了")mpw=20 mph=12 mps=12 mx=mps/2 my=mph/2*mps-mps/2
mjs=1 mjc=mjm=10 mep=0 mem=40 M=4 ang=1 AK=BK=CK=0
col(0xFF0000)frect(0,0,width,height)
func hit(dx,dy){r=1
if((0<dy)&&(dy<mph*mps)&&(0<dx)&&(dx<mpw*mps)){i=dy/mps*mpw+dx/mps
r=(!(strat(map,i)))}return r}func setchar(str,i,char){l=strlen(str)
f=substr(str,0,i) e=substr(str,i+1) return f.char.e}func makemap(){map="1"
for(i=0;i<mpw*mph;i++){if(abs(rand)%100<kpm){map=map."0"}else{map=map."1"}}cchip(mx,my,"1")for(i=0;i<mpw*mph;i++){col(0xFFFFFF*strat(map,i))frect(i%mpw*mps,i/mpw*mps,mps,mps)}}func
dchip(dx,dy){i=dy/mps*mpw+dx/mps i=max(min(i,mpw*mph-1),0)
col(0xFFFFFF*strat(map,i))frect(i%mpw*mps,i/mpw*mps,mps,mps)}func
cchip(dx,dy,c){if((0<dy)&&(dy<mph*mps)&&(0<dx)&&(dx<mpw*mps)){i=dy/mps*mpw+dx/mps
map=setchar(map,i,c) dchip(dx,dy)}}
func s1(){cchip(mx,my-mps,"1")cchip(mx,my+mps,"1")cchip(mx+mps*ang,my,"1")}func
s2(){cchip(mx,my-mps,"1")cchip(mx,my-mps*2,"1")cchip(mx,my-mps*3,"1")cchip(mx,my-mps*4,"1")cchip(mx,my+mps,"1")cchip(mx,my+mps*2,"1")cchip(mx,my+mps*3,"1")cchip(mx,my+mps*4,"1")}func
s3(){cchip(mx+mps*ang,my,"1")cchip(mx+mps*2*ang,my,"1")cchip(mx+mps*3*ang,my,"1")cchip(mx+mps*4*ang,my,"1")cchip(mx+mps*5*ang,my,"1")cchip(mx+mps*6*ang,my,"1")cchip(mx-mps*ang,my,"1")cchip(mx-mps*2*ang,my,"1")}
label 1 col(0xFF0000) frect(0,0,width,height) mx=mps/2 my=mph/2*mps-mps/2 mep=0
kpm=abs(rand)%40+20 makemap()
label 0 omx=mx omy=my K=scan if(K & 262144){end}if(K & 131072){goto 1}
if(((mjs==0))&&(!(hit(mx,my+M)))){mjs=1 mjc=mjm}
if((mjs==1)&&(mjc==mjm)){if(!(hit(mx,my+M))){my=my+M}else{mjs=0 mjc=0}}
((mjs==0)&&(K & 4096)&&(mjs=1))>0
if((mjs==1)&&(mjc<mjm)){if((!(hit(mx,my-M)))&&(K & 4096)){my=my-M
mjc++}else{mjc=mjm}}
((K & 8192)&&(! hit(mx-M,my))&&(mx=mx-M)&&(ang=-1))>0((K & 16384)&&(!
hit(mx+M,my))&&(mx=mx+M)&&(ang=1))>0 if(K & 1024){AK++}else{AK=0}if(K &
1){BK++}else{BK=0}if(K & 2048){CK++}else{CK=0}
if((AK==1)&&(mep>=mem)){s1() mep=mep-mem}if((BK==1)&&(mep>=mem*2)){s2()
mep=mep-mem*2}if((CK==1)&&(mep>=mem*3)){s3() mep=mep-mem*3}if(mep<mem*3){mep++}
lock()dchip(omx,omy)col(0x559999)frect(mx-2,my-2,4,4)col(0)frect(5,5+mph*mps,mep,10)col(0xFFFFFF)frect(5+mep,5+mph*mps,mem*3-mep,10)rect(5,5+mph*mps,mem,10)rect(5+mem,5+mph*mps,mem,10)rect(5+mem*2,5+mph*mps,mem,10)unlock(0)
goto 0
V3G対応マダー??チンチン
ボオダなんかには対応せんだろDoCoMoが神なんだから
>>422 おー!なんだできてたんじゃないすか
どっとアクションを彷彿とさせるようなつくりだぁ
期間終わったからって投げないで最後まで作ればおもしろいのができそうな希ガス
うむ。できてたのだ。
落下死亡と、右端から次のマップロード
と、あとタイムアタックつければゲームになりそうなのよね。
技の範囲と貯め時間の判断がアクションパズルっぽいかも
書き忘れてたけど、カーソルで移動と * 0 # で技ね
楽しみだね。
でもひとつ、iMonaから見てるからソース写すのがキツかった…2chにやるときはできれば一つカキコの文字数を減らしてほしい。
ちなみに1000文字が限界ぽい。そしてできればアップ板に投稿してほしかった。
そういえばアップ板にあったタイトルが空白のやつって422さん?
>>489 あーごめん。自分はパソで専ブラで見てから携帯に転送してるから、文字数は板の制限しか意識してなかった。
うむ。最初うp板使おうとしたらめちゃくちゃ重くて・・・ 中断して、あ 失敗したな。と思ってた。
今気付いたけどタイトルなしで投稿されてたのね。ブラウザじゃクリックできないから気付かなかった。orz
次のプログラムコンテストのお題の難易度は上中下だとどれぐらいがいい?
ローグライクがいいとおもわ(ry
マップ固定なら出来なくはなさそうだな
ランダム生成を持ち出すとキリがない
てかむしろそれはみんなでやるべきだ。
俺はアイテムや敵キャラ案なら出せるが。エンジン部分は頭の良い連中にパス
ゴメンエンジン部分なら担当したい。
誰か教えてくれランダムな数値をsubstrで読み込むときはどうすればいいの?
AA=abs(rand)%2000
substr(AA,1,1)とやっても無理だった…やっぱAA="254122000"こんなんでないと駄目?
AA=abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.abs(rand)%5+2.2.3.2.3.2.3.2.3.2.3.2.3
こんな感じで一様うまくいったが、もう一つabs(rand)%5+2を付けるとバグがでる。_/ ̄|〇
すごい単純なミスだった…2147483647以上になったからエラー吐かれたのか
まあ何にせよ作るならそれにしかない要素や人の感情を動かせるストーリーなどがないと普通の人には"つまらない"ものになっちゃう
こないだのムリオも自分ではおもしろいかと思ったが友人にはつまらなかったようだし
まあそういう部分は人に任せるとして俺は技術的なとこ手伝うよ
ストーリーをここに書き込んでいいですか?
ローグライクのだろ?
ぉk。燃料come
こんな自分好みのストーリーですが聞いてください。
ある日、いつものように家に帰る途中の事だった。
いつものようにいじめっ子にいじめられ近道をして家に帰るはずだった。
しかし時計の針が九時を回っていた事もあって、いつも近道にしていた森の中で迷ってしまった。
そして気が付いたら、いつもなら何もない通り道に、ポッカリと不気味に穴を空けた洞窟があった。
さすがに恐くなったのでその場を立ち去ろうとした。
その時鬱蒼とした森の中に不気味な声がこだました。
『お前は弱い人間なんだな』自分は不気味な声がしたにも関わらず妙に納得してしまったのだ…
その次の瞬間また不気味な声がした『でも本当は誰よりも強い…そうだろ?お前はただ自分の力が暴走してしまうのに恐れているのだけだ』
自分は改めてその声の正体の、えもいえないおぞましさを感じた。
そう…あれは子供の頃、定かな記憶ではないが憶えている。
自分は今と変わらずいじめられていた。
ある日いつもの様にいじめられていた‥
その日は特にひどく…殴る蹴る挙げ句は木にがんじがらめに縛られて、自分では解く事もできない。
本当はあの時死んでいたのだろう
長すぎる…orz
後全角10000文字位あるので…このぐらいにさせてもらいます
早っ
後がきになる…かっこいい系?ファンタジー系?ミステリー?
でも10000文字はきつ
アドベンチャー系。
最終的には死のカードを手に入れて死ぬ。
が命の大樹により復活させられ、魔王(声の主)を倒しに行く。
イェンダーアミュレットの変わりにカードを十枚探す。
で最後に、その冒険の出来事は夢だと気付く。
そして森の記憶だと気付く…実は命の大樹が主人公を導きそして今日を作らせた
五万年前の超古代文明の魔王大戦によって本当は全てが魔王により破壊されるわけだったが
一人の勇者によって食い止められた
でも魔王の魂は現代まで生き続け主人公に、復活に必要なカードを探させる
で復活可能なカードが揃ったら死のカードを最後に探させ命を絶たせる。
何故大樹が主人公を蘇らせたかと言うと
主人公が五万年前にいた勇者の魂を持って生まれた少年だったからだ
ちなみにその大樹は超古代文明の象徴。
古代文明の遺跡=洞窟(無理矢理ですが)要するに現代まで息を潜めていた
それと何故魔王が主人公を最後に消したかというと
主人公があの勇者の魂を持った人間だということを知っていたから
長文すいません。
システムでちょい提案だけど、ダンジョンの初めで最強状態からスタートして塔を上っていくごとに(時間が経つごとに)弱くなっていくっていうのどうだろうか。だめか…
で、ローグライクについて詳しく
武器防具腕輪アイテム等ののシステムはあるが全て"〜のカード"という名前になる。
店はシレン風な感じで
十枚の魔法のカード(前者とは異なる)を集め最後に魔王を倒すのが目的。
能力値のレベルアップは経験値が貯まると、
一定値のポイント(例:+20)等がもらえ自由にステータスに加えられる。
ダンジョンは1部屋以上九部屋まで。
すいません本当自分勝手で。
能力値を自由に振り分けて尚且つ武器防具…
なんか物凄くバランス調整が大変そうなので、
やっぱ能力値は完全に武器防具等のアイテム依存でいきたいです。
レベルアップで増えるステータスはヒットポイントのみということで。
511 :
434:2005/10/09(日) 21:36:16 ID:+S26XbiiO
プログラム的にはどうする?マップ初期化関数とメインループと戦闘は別ループだよね?それと店とかシナリオ部分とか切り分けりゃいいよね。
どこ担当したいですか?
label 0
'メインループ(移動とか)'
goto 0
func Update(){'マップ初期化'}
label 戦
'戦闘処理'
goto"戦"
label 店
'買い物処理'
goto"店"
label シナ
'シナリオ進行'
goto"シナ"
label 他
'メニューとか'
goto"他"
あまり…と言うか全く知識が無いんですがシナリオがいいです
それとマップ生成なんです一部屋だけ作りました。
マップ生成の件なんですが…
一部屋つくり主人公が必ずその部屋の中に入るようにできたんですが
その後どうやって後の部屋+通路を作れば良いのか分かりません
なんかいい方法知りませんか?
マジでこれログ読むべき雰囲気?
全然会話が付いていけない
とりあえず、変数管理とかちゃんときめれば、
>>511みたいにすれば、分担作業で作れそうだけど
ああ、意味がわかった・・・ ↓いまここね
コンテストお題何?→ローグライク→みんなで作ろう
じゃぁ俺メッセージウィンドウ表示関数とか作ってみるか
とりあえず画面の縦横のピクセル幅だけきめようよ
1000×1000位がいいです
縦横でした(汗
で誰か通路をつくるにはどうしたらいいのですか?
部屋から部屋までにつなぐ方法が全くもって分かりません
ダンジョンてスクロールさせんの?
読み込みとか低性能機を考慮してゼルダ式でいいんじゃないかな
>>518 部屋Aの縁から
1:距離を乱数でとる
2:方向を乱数でとる
3:そのラインを空間にする
4:終着点から1〜3をする
これを適度に繰り返す
部屋Bの縁から
空間にぶち当たるまで1〜4を繰り返す
どうかな
もしくわ、ひたすら1〜4ででたらめに線を引きまくってから、
適当な位置をでかく空けて部屋にするとか。
まぁ携帯じゃ無理か
>>519さん
主人公は完全固定させ、ダンジョンという図形を動かす感じにしたいと思っています。
>>521さん
前者のアイディアを使わせてもらいます。
てか今シレンやっていますw
主人公が壁を掘れるようにするのもいいかもね
もちろん制限は必要だと思うけど
>>522 がんばってくだちい
一つマップデータの管理に関して思いついた。
通過可能/不可能部分を1bit目、主人公存在/非存在を2bit目、
敵Aを3bit目、敵Bを4bit目、とか規定して数値で保存する。
で、メインループで、マップデータ解析→制御オブジェクトデータ抽出 とかを毎行動でループさせれば、
マップ表示だけ作ったよ〜 とかから付け足しやすくなりそう
わかりにくくてスマ
今部屋が二つになったけど、strやsubstrとか使わなくても平気ですよね?
>>522 どんなアルゴリズムで表示するん?処理速度が気になってしょうがない…
そしてできれば非QVGAの俺にも親切な設計だと喜ぶ
どういう風に作ってるのか気になるなぁ
俺も基本システム作ってみるか
randで箱を生成しました主人公は完全に動きません。
label 0if(scan&8){end}A=abs(rand)%4A==3&&b=b-20;A==2&&b=b+20;A==1&&a=a+20;A==0&&a=a-20;col(0)frect(a+120,b+120,20,20)goto 0
通路はこんな感じで乱数とって良いんですか?
>>530 その、20ってのも5〜30の乱数にしてみるといいかも
今 仮想二次元配列ラッパー関数郡 製作中
デフォルトの機能で使えばいい気がしてならないが製作中・・・
うー
条件式分岐法を使うとき、代入文の返り値、代入値が0だと偽になるの気付いてなくてめっちゃ手間取ってた・・・
マイナスになりえない数値なら+1すればいいけど、そうじゃない場合ってどうすりゃいいんだろ
おもったんだけど
if(DA==1000){break}みたいな事はできないの?
そらできるよ。それできなかったらbreakの意味がない
func ・(a){return 1}
っての定義して条件式中の代入文を囲ってみた。なかなか便利。(関数名は半角の・ 携帯だとあった
二次元配列ラッパー、だいぶできました。あとは自作二次元配列間の矩形転送も作ったら公開します。
マジで意味あるかわからんが・・・
"3,255,255,255,0,0,0,110,0,0,0,10,10,0,0,0,0,1,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,0,0,1,2,2,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,2,2,2,2,2,1,0,0".
",0,1,2,2,2,2,2,1,0,0,0,1,1,1,1,1,1,1,0,0,1,2,2,2,2,2,2,2,1,0,1,2,2,2,2,2,2,2,1,0,1,1,1,1,1,1,1,1,0,0"
で ↑は何??
1000文字シリーズ「ぶちょぶちょ」
下左右で操作。連鎖を組むことだけが目的。連鎖数は自分で数える つーか誰か高速化して…
for(;a<11;A[-1][a]=A[6][a]=A[a++-2][11]=-1){}origin(width/2-36,height/2-72)rect(-1,-1,73,133)soft1("EXIT")B(X=9)@(c,255<<16,0xFF00,255,0xFFFF00,0x800080)label 0lock()clear(X*12,Y*12,12,12)col(c[t])
farc(12*X=X-(A&(m=1)&&!A[X-1][Y])+(A&2&&!A[X+1][Y]),12*Y=Y+((A&4||++g==16)&&(!A[X][Y+1]&&!g=0)||m=0),12,12)unlock(1)if(16&A=scan
>>13){end}goto!m&&!B();label 1lock()for(J=I=0;I<6;I++){
copy(Z,0,C[I],0,11)}for(W=N=i=0;i<6;i++){for(j=0;j<11;j++){A[i][j]&&!C[i][j]&&(++N,R=a=!H=A[i][j],A(i,j),R>3&&J=W[W++]=N)}}if(W){clear(0,0,72,132)for(i=0;i<6;i++){for(k=!j=10;j>=0;j--){
for(I=0;I<W&&C[i][j];I++){if(W[I]==C[i][j]){copy(A[i],-1,A[i],0,j+1+k++)}}}for(j=0;j<11;j++){if(f=A[i][j]){col(c[f-1])farc(i*12,j*12,12,12);}}}}unlock(1)goto!!J
func A(x[a],y[a]){for(C[x[a]][y[a]]=N,I[a]=1;I[a]>-2;I[a]=I[a]-2){if(!C[n=x[a]+I[a]][y[a]]&&A[n][y[a]]==H){A(n,y[a++])}if(!C[x[a]][n=y[a]+I[a]]&&A[x[a]][n]==H){A(x[a++],n)}}R++a--}func B(){A[X][Y]=t+1X=2Y=g=0t=abs(rand)%5}
前にあったぐるぐるは三角関数上の4点をつないでただけで全然3DじゃなかったけどこれはZ座標まであって行列で回す本当の3Dぐるぐる。
ただし重くならないように三角錐を回してます。
abcがXYZ軸の回転角度、これを直接操作できるようにするとおもしろいかもしれない
@(X,0,50,-50,0)@(Y,-48,38,38,38)@(Z,0,-38,-38,48)A=rand%10B=rand%10C=rand%10origin(width/2,height/2)label 0lock()col(0)frect(-width/2,-height/2,width,height)for(a=a+A,b=b+B,c=c+C,i=0;i<4;
z1=(sin(a)*Y[i]+cos(a)*Z[i])/100,z2=(sin(b)*X[i]+cos(b)*z1)/100,y2=(cos(a)*Y[i]-sin(a)*Z[i])/100,x2=(cos(b)*X[i]-sin(b)*z1)/100,x2[i]=(cos(c)*x2-sin(c)*y2)/100,y2[i]=(sin(c)*x2+cos(c)*y2)/100,z2[i]=z2,i++){}
col((CO<65535&&CO=CO+1285,CO))for(i=0;i<4;i++){line(x2[i],y2[i],x2[(i+1)%4],y2[(i+1)%4])}line(x2[1],y2[1],x2[3],y2[3])line(x2[0],y2[0],x2[2],y2[2])unlock(1)if(input(0)){end}goto 0
自分でもやってみたかったから操作できる版作った。上下左右とセンターキーとソフト1で回す
soft2("EXIT")@(X,0,50,-50,0)@(Y,-48,38,38,38)@(Z,0,-38,-38,48)origin(66,72)label 0lock()clear(-66,-72,132,144)if(64&S=scan
>>12){end}(S&1&&a=a+10,S&8&&a=a-10,S&2&&b=b-10,S&4&&b=b+10,S&16&&c=c+10,S&32&&c=c-10)
for(i=0;i<4;z1=(sin(a)*Y[i]+cos(a)*Z[i])/100,z2=(sin(b)*X[i]+cos(b)*z1)/100,y2=(cos(a)*Y[i]-sin(a)*Z[i])/100,x2=(cos(b)*X[i]-sin(b)*z1)/100,x2[i]=(cos(c)*x2-sin(c)*y2)/100,
y2[i]=(sin(c)*x2+cos(c)*y2)/100,z2[i]=z2,i++){}for(i=0;i<4;i++){line(x2[i],y2[i],x2[(i+1)%4],y2[(i+1)%4])}line(x2[1],y2[1],x2[3],y2[3])line(x2[0],y2[0],x2[2],y2[2])unlock(1)goto 0
541 :
非通知さん@アプリ起動中:2005/10/23(日) 21:06:51 ID:n7E6tHPR0
文字列の結合どうやるんですか
. でつなげる
A="1"."2"."3"."4"."5"
text(A,0,0,0)input()
長すぎる画像データとかを分けて連結とかに使える
vodaの携帯BASIC使ってるんだが文字の大きさ変更できる?
何度やっても出来ないんだが。
ローグらいくキボンヌ
ほんとにSPALMでローグなんて作れんのかな…なんか自信なくなってきたよ。まぁ俺は作ってないけど
「(*/+-)」
四則演算の文字列から値を出すプログラム。式文字列はAにそれと同じ式をANSに代入すると二式の結果が表示されます。使えるのは*/+-()と数字のみ
A="(50-9)*2+((-6)*8+16)/2"
A=A."E"
'答え'
ANS=(50-9)*2+((-6)*8+16)/2
N=token()
func token(){while(1){if(scan){end}if(index("0123456789",strat(A,p))>=0){for(p2=p+1;index("0123456789",strat(A,p2))>=0;p2++){}T[N++]=substr(A,p,p2-p)p=p2}if(index("*/+-()",C=strat(A,p))>=0){p++T[N++]=C}if(strat(A,p)=="E"){T[N]="E"break}}}
func ad(){g[n]=fc()M=1while(M){switch(T[N]){case"+":g[n]=g[n]+fc(N++)break;case"-":g[n]=g[n]-fc(N++)break;default:M=0}}return g[n]}
func fc(){h[n]=ex()L=1while(L){switch(T[N]){case"*":h[n]=h[n]*ex(N++)break;case"/":h[n]=h[n]/ex(N++)break;default:L=0}}return h[n]}
func ex(){r=0if(T[N]=="("){i[n++]=ad(N++)n--N++r=i[n]}if(index("0123456789",strat(T[N],0))>=0){r=T[N++]}return r}
text("計算結果 ".ad(),0,0,0)
text(" 正解 ".ANS,0,20,0)
input()
ぐあ 急に流れが
ぶちょぶちょはなんか、一個目が落ちて、底辺についてからニマス移動するタイミングでエラー
つい最近まで試験だったから何もやってないや
エラーって何エラー?こっちでは何も出ないけど…
俺は試験中の投稿orz...
俺も出なかった
N900iで実験
精度最悪な平方根求める関数。sqr(数字)と使う。こちらの携帯では√90000=300までは1秒以内に値が返りました。
func sqr(varx){while(varP*varP<varx){varP++}return varP}
対数を求めるプログラム。log(底,真数)と使う。log(2,scan)とすると押したボタンの番号を直接得られる。
func log(w,x,P){while(pow(w,P++)<x){}return P-1}
階乗も作ってください
ほい
func fact(x){for(P=1,i=x;i>0;P=P*x--,--i){}return P}
>>549 もう少し長くなってもいいから精度と速さを向上お願いできます?
精度高めたら遅くなりますよ?
なんだかんだで作成。10000倍の精度にアップ。速度落ちた。sqr2(2)で14142が返ります。
func sqr2(x,P){for(i=0;i<5;x=x*100,P=P*10-10,++i){while(P*P<=x){++P}}return P/10}
あとひとつ。for文のi<5を1大きくすれば精度は10倍になりますが、遅くなる上に大きな数の平方根を求めようとすると負になったりします。
そこは自分で調整してください。
携帯BASICの階乗は、膨大な数を計算できるみたいだけど‥あれはどうなってるんですか?
平方根自前とかすっげーー!
数学関数シリーズ
極めつけはArcTan。
2点(x1,y1)(x2,y2)があるとするとatan(x2-x1,y2-y1)で(x1,y1)から見た(x2,y2)の角度がわかります。
三角関数を出すだけなら簡単ですが今回はtanから角度を出すことにこだわってみました。十字キーで点を動かすと角度を出して線が動く。
soft1("EXIT")origin(66,72)label 0lock()if(32==A=scan
>>12){end}clear(-66,-72,132,144)frect(-1+X=X-!!(A&2)*4+!!(A&4)*4,-1+Y=Y-!!(A&1)*4+!!(A&8)*4,3,3)line(0,0,cos(T=atan(X,Y)),sin(T))text(T."゚",0,0,0)unlock(1)goto 0
func atan(x,y){if(x){for(t=abs(100*y/x),i=-1;t>tan(i=i+10);){}for(i=i-10;t>tan(i);++i){}y<0^x<0&&i=-i;x<0&&i=180+i;}else{i=Y<0?270:90;}return i}
うぉう すげぇ・・・
三角関数って、やっぱ中の人は普通に計算してるのねorz
…とまぁ、無駄に名無しで投稿させてもらいました。平方根からatanまであったら便利な関数群ができたのでこれで色々なおもしろいプログラムが作れるはずです。
もっと他の人のプログラムが見たい…
func mborgsqrt(i,j){k=32768do{}while(j=j^k,j*j>i&&j=j^k,k=k
>>1)return j}
たぶんこの平方根関数が最強
ァソレソレ
∧∧
(゚ω゚)
あ〜りゃりゃらこりゃら〜
アニ横か!?
566 :
非通知さん@アプリ起動中:2005/11/22(火) 17:50:42 ID:yBYhc6rY0
放送日age
567 :
前スレに「習作」として上げられてた奴を勝手に移植:2005/11/29(火) 21:16:29 ID:oxY1z9DrO
l=9m=(-3)c=250soft1("EXIT")soft2("CLEAR")for(i=0;i<l;i++){x[i]=abs(rand)%width y[i]=abs(rand)%20}
label 1color(0,0,0)frect(0,0,240,270)label 0lock()color(0,c,0)for(i=0;i<l;i++){text(abs(rand)%10,x[i],y[i]*12,0)y[i]++if(y[i]*12>height){y[i]=0 x[i]=abs(rand)%width-3}}
gc()unlock(1)if(input(0)==131072){end}elsif(scan==262144){goto 1}c=c+m if(c<60|c>252){m=-m}goto 0
勝手に作ってスマソ
おまいらお願いですからiBASICで動くコード書いてくださいです(´・ω・`)
569 :
非通知さん@アプリ起動中:2005/11/30(水) 00:04:06 ID:oX5DxZ7cO
俺もそう思ったけど時代の流れかと思いSPALM覚えた…
機能、処理ともに格段に上だが直感的に作りやすいのは携帯BASIC+なんだよな…
急激な言語の変化もここが過疎った原因の一つかと
携帯BASICもまだまだ価値ありだよな
SPALMってどこにあるの? ドコモで動く?
>>313からいける
一応、iBASICの強化版である携帯BASICの高速処理版…携帯BASIC+も落とせるよ
ちなみに携帯BASIC+とSPALMは基本的に文法が違う
572 :
非通知さん@アプリ起動中:2005/11/30(水) 02:39:49 ID:oX5DxZ7cO
上げとくか┗(*´Д`)┛よいしょ
なんかいいお題無い?
576 :
非通知さん@アプリ起動中:2005/12/01(木) 22:33:14 ID:hsUqOHg6O
思考系パズルとか。
問題作ってみんなで遊べるとかね
アクションの面をエディットできる奴でもいいな。
NOBAさん見てくれていないだろうか…
ローグライクキボンヌ
カラータイル
@(imgCOL,"190,0,0,255,0,0,255,200,200","0,190,0,0,255,0,200,255,200","0,0,190,0,0,255,200,200,255")for(;A<3;++A){loadimg(A[A],"4,".imgCOL[A].",255,255,255,-1,16,16,0,1,1,1,1,1,1,1,1,1,1,1,2,2,1,0,0,0,".
"1,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,2,1,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,1,1,2,3,3,3,2,2,1,1,1,1,0,0,0,2,1,1,2,2,2,2,2,1,1,1,0,1,0,0,0,2,1,1,2,2,2,1,1,1,1,".
"1,0,1,0,0,0,2,1,1,2,2,1,1,1,1,1,0,0,1,0,0,0,2,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,2,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,1,1,1,".
"0,0,0,0,0,1,1,1,1,0,0,0,2,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0")}lock()for(;i<64;++i){drawimg(A[i%3],i%8<<4,i
>>3<<4,0)}unlock(1)input()
579 :
非通知さん@アプリ起動中:2005/12/02(金) 14:17:33 ID:dZBLsfHfO
■線上のありゃ〜
□[1]角A,Bランダム [0]クリア [S2]終了
xm=2ym=5label 1color(0,0,0)frect(0,0,240,270)soft2("QUIT")label 2ax=abs(rand)%240ay=abs(rand)%240bx=abs(rand)%240by=abs(rand)%240
label 0color(r%250,g%250,b%250)line(ax%240,ay%240,bx%240,by%240)line(ax%240,ay%240,x,y)farc(x-3,y-3,7,7)if(scan==1){goto 1}elsif(scan==262144){end}elsif(scan==2){goto 2}
ax=ax+2ay=ay+4bx=bx+6by=by+5r=r+5g=g+7b=b+2x=x+xm y=y+ym if(x>240|x<0){xm=-xm}if(y>240|y<0){ym=-ym}goto 0
じゃあなにならいいですか?レースですかそうですか
582 :
非通知さん@アプリ起動中:2005/12/13(火) 23:01:31 ID:fm1LbS+XO
クズよばわりはひでぇや(っД`)
という訳で新しくまともなものを制作途中なのにすでに7KBを越える勢いだ
アプリメーカーズみたいに通信でうpできるといいのにな
俺みたいにしっかりとしたRPGなどを作れと言いたい。
俺もここにアップしたいけど20000文字ぐらいあるからちと無理。
それにアップしないのにアゲんな
晒してない≒作ってない、だろが
これ以上過疎スレにする気か
作っていない=スレの価値が無い
激しくしょぼいが…
複雑なコースの中を通ってゴールに着くまでにかかったフレーム数の少なさを
競うゲーム。ちなみに俺は186だった(1で終了)
@(X,110,88,110,86,104,80,86,72,68,58,66,48,68,52,78,78,82,98,74,90,50,38,38,16,36,14)@(Y,128,128,108,108,88,96,76,96,74,90,66,66,60,48,62,44,66,62,78,90,80,100,44,44,32,32)makeimg(B,132,144)trgt(B)lock()
for(i=0;i<24;++i){line(X[i],Y[i],X[i+2],Y[i+2])line(X[++i],Y[i],X[i+2],Y[i+2])}text("GOAL",14,32,32)trgt(off)X=100Y=122label 0R++lock()drawimg(B,0,0,0)if(A=scan,x=X,y=Y,X=X+!!(A&16384)-!!(A&8192),Y=Y+!!(A&32768)-!!(A&4096)
,A(G,G+2)){X=x Y=y}if(A(G+1,G+2)){++G}elsif(A(G,G+1)){--G}frect(X-1,Y-1,3,3)if(A&2){end}if(Y<33){soft2(R)clearkey()input()end}unlock(1)goto 0func A(a,b){
return(X[b]==X[a])?(X[a]<x)^(X[a]<X):(Y>(m=Y[b]-Y[a])*X/(n=X[b]-X[a])+Y[a]-m*X[a]/n)^(y>m*x/n+Y[a]-m*X[a]/n);}
ごめん
ちょい修正。
@(X,110,88,110,86,104,80,86,72,68,58,66,48,68,52,78,78,82,98,74,90,50,38,38,16,36,14)@(Y,128,128,108,108,88,96,76,96,74,90,66,66,60,48,62,44,66,62,78,90,80,100,44,44,32,32)
makeimg(B,132,144)trgt(B)lock()for(i=0;i<24;++i){line(X[i],Y[i],X[i+2],Y[i+2])line(X[++i],Y[i],X[i+2],Y[i+2])}text("GOAL",14,32,32)trgt(off)X=100Y=122label 0lock()
drawimg(B,0,0,0&(++R,A=scan,x=X,y=Y,X=X+!!(A&16384)-!!(A&8192),Y=Y+!!(A&32768)-!!(A&4096),A(G,G+2)&&(X=x,Y=y)))frect(X-1,Y-1,3,3)if((A(G+1,G+2)&&++G)||A(G,G+1)&&--G,G==24&&E(),A&2){end}
unlock(1)goto 0func A(a,b){return X[b]==(c=X[a])?c<x^c<X:(Y-Y[a])*(n=X[b]-c)>(m=Y[b]-Y[a])*(X-c)^(y-Y[a])*n>m*(x-c);}func E(){unlock(1)soft2(R)clearkey()input()end}
何のカキコもないな…orz
俺的には結構すげーと思ったんだけど
つーかイライラ棒みたいなゲームにすりゃよかったかな?
面白かった。勃起した
やはりプログラムはあげてなんぼ
俺もやる気出た
そんなに興奮したのか…
これからも新しい技術考えるばい
みんなどうやってソース作ってんの?BASIC?てか良く作れるな〜……
592 :
ZACCユウイチ:2005/12/16(金) 14:08:14 ID:GxUuyUQDO
591
うざい?
593 :
ZACCユウイチ:2005/12/16(金) 17:55:22 ID:GxUuyUQDO
スレ立てた。
2chスレ
594 :
ZACCユウイチ(間違った):2005/12/16(金) 17:58:41 ID:GxUuyUQDO
595 :
ZACCユウイチ(連レススマソ):2005/12/16(金) 18:06:59 ID:GxUuyUQDO
連レススマソ。ソース作成出来ないくせして連レスすまん。…てかソース作成難すぎる……RPG作成とかぜってー無理……
長文スマソ。……
596 :
ZACCユウイチ:2005/12/16(金) 18:20:24 ID:GxUuyUQDO
a="=1=,=1="=
"=ク=ソ=ケ=゙=ー"=
O=P=無=し=
I=I=U=
I=V=W=
V=I=I=I=[=
ど=う=か=な=?=
当たり前にエラーだった(笑)
func H(q){C[q]=!C[q];}soft2("QUIT")@(PX,0,4,34,64,4,34,64,4,34,64)@(PY,0,4,4,4,34,34,34,64,64,64)frect(0,0,width,height)
color(250,250,250)origin(2,2)rect(0,0,93,93)for(x=3;x<64;x=x+30){for(y=3;y<64;y=y+30){rect(x,y,27,27)}}for(n=1;n<10;n++){C[n]=abs(rand)%2}goto 1label 0
i=input()if(i&2){H(1)H(2)H(4)goto 1}elsif(i&4){H(1)H(2)H(3)H(5)goto 1}elsif(i&8){H(2)H(3)H(6)goto 1}elsif(i&16){H(1)H(4)H(5)H(7)goto 1}
elsif(i&32){H(2)H(4)H(5)H(6)H(8)goto 1}
598 :
2/2:2005/12/16(金) 20:44:33 ID:BKx0B5M7O
elsif(i&64){H(3)H(5)H(6)H(9)goto 1}elsif(i&128){H(4)H(7)H(8)goto 1}elsif(i&256){H(5)H(7)H(8)H(9)goto 1}elsif(i&512){H(6)H(8)H(9)goto 1}
elsif(i&262144){end};label 1lock()for(n=1;n<10;n++){if(C[n]==1){color(150,230,150)frect(PX[n],PY[n],23,23)P++}
elsif(C[n]==0){color(0,0,0)frect(PX[n],PY[n],23,23)}}unlock(1)if(P==9){color(250,250,0)text("CLEAR!",31,115,0)clearkey()input()end}P=0goto 0
599 :
ZACCユウイチ:2005/12/16(金) 20:46:48 ID:GxUuyUQDO
ライトアウツって何?良く作ったね〜!
あんまり意味無いけど
ライトアウト短縮版。手数がカウントできる
func H(q,r){C[i%3+q][i/3+r]=!C[i%3+q][i/3+r]}soft2("QUIT")frect(0,0,width,height)col(0xFAFAFA)origin(2,2)rect(0,0,93,93)for(n=0;n<9;C[n%3][n++/3]=abs(rand)%2){rect(3+n%3*30,3+n/3*30,27,27)}goto 1
label 0i=log(input())if(i&&i<10){--i H(0,0)H(-1,0)H(0,-1)H(1,0)H(0,1)T++goto 1}elsif(i==18){end}label 1lock()for(n=0;n<9;++n){if(1==c=C[n%3][n/3]){col(0x9AE69A)frect(4+n%3*30,4+n/3*30,23,23)++P}
elsif(!c){col(0)frect(4+n%3*30,4+n/3*30,23,23)}}unlock(1)if(P==9){col(0xFAFA00)text("CLEAR!",31,98,0)text(T."手",31,112,0)clearkey()input()end}goto P=0func log(x,p){while(pow(2,++p)<x){}return p}
601 :
ZACCユウイチ:2005/12/16(金) 22:14:09 ID:GxUuyUQDO
602 :
非通知さん@アプリ起動中:2005/12/19(月) 23:52:08 ID:ONZHSgJuO
何か書け$OT
NG推奨ID:GxUuyUQDO
604 :
非通知さん@アプリ起動中:2005/12/22(木) 00:33:00 ID:C4iItzoqO
最強?BASIC
何かBASICの作って$OH
いまさらだがファンクション便利だな
色替えとかバイブさせるテキストツール作ってた椰子いたよな…
606 :
非通知さん@アプリ起動中:2005/12/22(木) 18:47:36 ID:C4iItzoqO
なんか教えてm(≧U≦)m
>>605 ああ、FTSYSだっけ?あれも開発続けたら面白かったろうに
思ったんだけど前スレ見たいって人いる?
html持ってるからいいあぷろだあればあげるかもなんだけど…
結構面白い事書いてあるしプログラムも全部携帯BASICのだからいいんじゃない?
神が!
個人的には見たい(`・ω・´)
そうそうあの982で保守失敗の…
で、自分にはあぷろだの捜索能力がないんでいいとこあったら紹介してもらえます?
もしかしたらZIP化するかも
612 :
非通知さん@アプリ起動中:2005/12/24(土) 18:14:15 ID:4rMkE9NMO
シレン風の作り方教えて下しぃ。自機:voda
使用アプリ:携帯BASIC 1.0.5
↑ゆういちキタすwwwバカスwww
過疎スレだしゆういちでも全然歓迎
ゆういち、メール欄には sage って書かんと悪徳業者や厨房が現れるからそこだけ頼むぜ
よし、まずは8*8のマップを自由に歩けるプログラムを作ってみろ
自機教えりゃバレたな。8×8マップ:作れない
移動:悪い。分かんね。俺はBASICユーザー辞めたがいいか?辞めたがいいよな…
X=4Y=4
label 0
lock()
clear(0,0,width,height)
text("人",X*12,Y*12)
unlock(1)
if input()and keyup and X>1then X=X-1
elseif scan=keydown and X<8then X=X+1
elseif scan=keyleft and Y>1then Y=Y-1
elseif scan=keyright and Y<8then Y=Y+1
goto 0
悪い、こっちな
X=4Y=4
label 0
lock()
clear(0,0,width,height)
text("人",X*12,Y*12)
unlock(1)
if input()and keyup and Y>1then Y=Y-1elseif scan=keydown and Y<8then Y=Y+1
elseif scan=keyleft and X>1then X=X-1elseif scan=keyright and X<8then X=X+1endif
goto 0
ありがとざいあす!ところでgoto 0って……
619 :
ゆういち:2005/12/24(土) 21:14:37 ID:4rMkE9NMO
617さん
この恵まれ無い私にお教えありがとうございます!
もう神で決定したいな。
620 :
ゆういち:2005/12/24(土) 21:33:36 ID:4rMkE9NMO
初めてのage
621 :
ゆういち:2005/12/24(土) 21:34:56 ID:4rMkE9NMO
んでもってマジのシレンやってた。
622 :
ゆういち:2005/12/24(土) 23:12:03 ID:4rMkE9NMO
3Dの作り方ない?
努力の様子が伺えない現段階じゃ絶対に無理だと言い切れるな。
ただ頭が弱いだけならまだしも努力しねーんだもん、そら無理だよ。
>ただ頭が弱いだけ
プゲラ
ダンジョン自動生成型探索プログラム。ファイルは2つ。
タイトル「init」
迷路を生成し、初期化
label 1for(w=width,h=height,N="北東南西",H[3]=H[0]=-H[1]=H[2]=1,V=!P[1]=P[0]=i=0;i<105;M[1][i%15][i/15]=M[0][i/15][i++%15]="B"){}MAKEMAZE(15,7)M[1][14][6]=M[0][6][14]="C"x=y=-1000origin(w/2,h/2)
func MAKEMAZE(W,H){for(i=1;i<W;i=i+2){for(j=1;j<H;M[1][i][j]=M[0][j][i]="A",j=j+2){while(M[1][i+x=rand%2][j+y=x?0:(rand&1)*2-1;]=="A"){}M[1][i+x][j+y]=M[0][j+y][i+x]="A"}}}soft1("EXIT")
タイトル「ダジョン」
左右で向きを変える。上で前進
座標(14,6)につくとメッセージウィンドウが表示されるので1か2で降りるかを選択
#init#label 0lock()col(0x400040)if(1<<17&A){end}if(B&&M[1][P[1]][P[0]]=="C"){clear(-27,-15,54,30)rect(-28,-16,55,31)text("1.おりる",-24,0,32)text("2.やめる",-24,1,0)if(A&2){B=0goto 1}elsif(A&4){B=0}}else{
clear(-w/2,-h/2,w,h)if(1&A=A
>>12){k=M[j=V&1][P[j]+H[V]][P[1-j]]if("B"==k||"C"==k){P[j]=P[j]+H[V]B=1}}elsif(A&2||(A&4)){V=1+V+A&3}text("方位:".strat(N,V).";座標(".P[1].",".P[0].")",-66,-72,0)for(i=0;i<4;++i){
line(62*H[i+1&3],62*H[i],0,0)}for(i=0;i<5;++i){j=16+i*24K=V&1l=M[K][P[K]+i*H[V]][P[1-K]]if("B"==l||"C"==l){for(k=0;k<2;++k){l=M[K][P[K]+i*H[V]][P[1-K]+H[k]*(1-(V
>>1<<1))]if("B"==l||"C"==l){
rect(x/(j+12*H[k]+12),y/(j+24),-x/(j+24)-x/j,-y*2/(j+24))}}rect(x/j,y/j,2000/j,2000/j)}else{frect(x/j,y/j,2000/j,2000/j)break}}farc(-10,40,20,5)col(0x80FE)frect(-8,12,16,30)}unlock(1)A=input()goto 0
sugeeeeeeee!!
大迷路思い出した(wizではないのがミソ)
神よ、&&とか||の使い方を教えて下さい
なんとなくキー関連が短縮できそうな気がしてます
神の教えてくれた手で色んな奴出来るよ。たとえば「主人公動かし処理」←普通「敵動かし処理」←出来る?「スライム動かし処理」←難い?
スライム動かし処理はtext(" ∧ ",20,20) text(" (・ ・) ",20,30) text("  ̄",20,40) 後は動かす処理等で…
神>敵の作り方もしくは戦いを教えて下さい!師匠(?)!
配列もわからん馬鹿に教えるかヴォケww少しは自分で考えろ。
そこまで分かってるなら出来るだろ
soft1("進化")soft2("終了")h=" 人"X=4Y=4label 0lock()clear(0,0,width,height)text(h,X*12,Y*12)text("(・・)",X*12,Y*12+10)text("  ̄",X*12,Y*12+21)
unlock(1)if input()and keyup and Y>1then Y=Y-1elseif scan=keydown and Y<8then Y=Y+1elseif scan=keyleft and X>1
then X=X-1elseif scan=keyright and X<8then X=X+1 elseif scan=keysoft2 then exit elseif scan=keysoft1 then h=" V"endif goto 0
632 :
神:2005/12/27(火) 00:31:26 ID:cUapEmpaO
>>328 スライムでも見てろ。
5,255,255,255,0,255,255,0,0,0,255,0,0,0,160,160,5,16,16,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,
0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1,1,1,0,1,1,1,0,2,2,0,1,1,0,2,2,0,1,1,1,1,1,
1,0,2,2,0,1,1,0,2,2,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,3,1,1,1,1,3,1,1,1,1,4,0,1,1,1,1,3,3,3,3,3,3,1,1,1,4,0,0,0,1,1,1,1,3,3,3,3,1,1,4,4,0,0,0,0,0,0,1,1,1,1,1,4,4,4,0,0,0,0
あれ…もしかしてSPALMって複数スレッド動かせないのか?
マジですかあ…今構想中の物は作れないやorz
まあ工夫してやってみるかな
情報thx
ところでkeez rabの携B+落とそうとすると504になるのは俺だけかな
ごめん、Keez lab で 404 だった
637 :
非通知さん@アプリ起動中:2005/12/27(火) 16:41:42 ID:vtK3EXbq0
アプリ=ゲーム
ではない
ソースアップ板にプログラム上げてる奴、ゆういちか?
だとしたらカマトトやめてなんか作れ
>>639 雷キック・オフ
ただのMAP?表示
ただの文字表示は、たぶんゆういちだろうな。
ホントあんなもんアップするなと。ちなみに404は俺もなった。
俺もスレッド使いたかった‥
>1-640
プログラミングコンテスト
・SPALMか携帯BASICのみ。
・今回のお題は[レースゲーム]で。
・期間は1週間。
・ではスタート!
>641
プログラミングコンテストね。よっしゃ〜!やる気でたぜ〜!
>632
は何?
自演すんだったら自分で立てたとこでやれよ…。
ダンジョンRPGのアイテムと言えば何があんの?つーか何が欲しい?
参考にしたいので教えて
646 :
>645:2005/12/30(金) 17:50:59 ID:AjUWvWAWO
>645
え〜と……?
何が欲しいかとゆうと……
奇跡の腕輪
・一回行動したらたまにHPを5回復させる。
ローグライクきぼーん
ローグではないのかもだけど、今不思議のダンジョンRPG作ってんのよ。
今は
アイテム
セーブ・ロード機能
ダンジョン生成・表示
と細かいのがいくつか実装済みなのよ。
これからバトルとかパラメータ系整えば完成しそう
あ、シナリオも必要か…一人でやるけどね
>>648 >不思議『の』ダンジョン
分かってるねぇ(^O^)
戦闘はエンカウント方式でいくわけだが
敵キャラを決めにゃならん
画像では容量重いし、図形でも手間がかかる…よって顔文字でいくことにした。
どんなのがいい?
【顔文字】
【戦法】
651 :
非通知さん@アプリ起動中:2005/12/31(土) 21:59:50 ID:f7M94ww8O
>650
顔文字.(・U・)ノシ
戦法.1:(U・)〓〓〇−☆2:(・3・)〓〓3
ちょっと細かいこと言うと敵AAは一つでよくて行動コマンドは攻撃・魔法・回復・防御の4つ
ステータスは強さ・防御力・魔力・精神力・素早さ・運がある。
これをふまえて書いてくれ
653 :
805:2006/01/01(日) 10:15:50 ID:fgGPH0tHO
ステータスとかも書けばいいのか?
攻撃ばっかとか回復重視とか
うp汁
今はまだゲームになってないくせにファイルが5個もあるからめんどい
トラップ床実装完了。
バトル画面はちょこっとポケモン風でいく。全体的に画面レイアウトがきつきつ
そして…
非 Q V G A 用
俺もコマンドバトル作ってみよっと
非QVGAでやってみる
めんどくても、うpしる、じゃないと本当に作ってるかどうかも分からんし、アドバイスもできん
「本体」
#init#origin(width/M[1][14][6]=2,height/2)soft1("EXIT")soft2("MENU")label 1if(1<<18&A){gosub"図"}lock()if(CL()+C()+1<<17&A){end}B=0if(1&A=A
>>12){if(M[j=V&1][P[j]+H[V]][P[1-j]]){P[j]=P[j]+H[V]B=1}}
elsif(A&14){V=1+V+A+A/8&3}text("方位:".strat(N,V).";座標(".P[1].",".P[0].")",-66,-72,0)line(-62,-62,62,62)line(-62,62,62,-62)for(i=0;i<5;++i){if(j=H[4+i],M[K=V&1][P[K]+i*H[V]][P[!K]]){for(k=i
>>2<<1;k<2;++k){
if(M[K][P[K]+i*H[V]][P[!K]+H[k]*(1-(V
>>1<<1))]){rect(-H[4+i+k],-l=H[5+i],l+j,l+l)}}rect(-j,-j,j+j,j+j)}else{frect(-j,-j,j+j+1,j+j)break}}farc(-10,40,20,5)col(0x80FE)frect(-8,12,16,30)unlock(1)
if(I=M[1][P[1]][P[0]],B&&I==1){if(abs(rand)%2000<EN){gosub"戦"}elsif(D[22]&1){D[7]=D[7]-HP/100}if(D[7]<1){goto"死"}}I<3&&A=input();goto I label 2if(!B){goto 1}
clear(-27,-15,54,30)C()rect(-28,-16,55,31)text("1.おりる",-24,0,32)text("2.やめる",-24,1,0)unlock(1)B=0while(!(A=input()&6)){}goto A
>>2label図lock()drawimg(M,-61,-71,CL(C()))
for(i=0;i<6;++i){text(substr("Lv HP EXPFLRGLDTIM",i*#sub##sub3#
「init」
labelーif(!load()){@(D,5,5,5,5,5,5,1,300,0,1,0,0,2,2)SAVE()}k=load()for(j=-1;i<24;D[i++]=substr(k,++j,-j+j=index(k,",",j))){}@(H,-1,1,1,-1,62,25,15,11,8)
@(IM,"ポーション","万能薬","破砕グラブ","鉄壁","水晶玉","マモノ餌","TNT爆弾","見透しの巻物","透明マント","幸せの風")@(IP,1,3,4,4,6,6,10,10,10,200)makeimg(M,122,58)get=tick/1000-D[11]V=-1frect(C(),0,width,height)w=132h=144N="北東南西"--D[9]LV=D[6]
HP=LV*LV+237*LV+362
>>1label 0gc()if(m=++D[9]%10==0&&V>=0){gosub 9}EN=100for(P[V=1]=P[0]=B=i=0;i<105;M[1][i%15][i/15]=M[0][i/15][i++%15]=1){}for(i=1;104>i=i+1+abs(rand)%40;M[1][i%15][i/15]=3+(rand&1)){}
for(i=1;i<15;i=i+2){for(j=1;j<7;M[1][i][j]=M[0][j][i]=0,j=j+2){while(!M[1][i+x=rand%2][j+y=x?0:(rand&1)*2-1;]){}M[1][i+x][j+y]=M[0][j+y][i+x]=0}}trgt(M)lock()clear(0,0,122,58)C()rect(0,0,121,57)for(i=0;i<120;i=i+8){
for(j=0;j<56;j=j+8){switch(M[1][i
>>3][j
>>3]){case 0:frect(i+1,j+1,8,8)break;case 3:frect(i+3,j+3,4,4)frect(i+4,j+2,2,6)clear(i+4,j+3,1,3)}}}trgt(off)
「sub」
3,3).":".D[i+6],0,i*12-12,0)text(strat("強耐魔精早運",i).":".D[i],-64,i*12-12,0)}text("ST",-64,60,0)for(i=0;i<4;++i){if(D[22]&1<<i){text(strat("毒沈闇混",i),-52+i*12,60,0)}}text("MaxHP:".HP,0,60,0)soft1("SAVE")soft2("ITEM")
C()while(64!=(j=input(0)
>>12)&&(j&32&&j=SAVE(D[11]=k),1)){lock()clear(P[1]*8-60,P[0]*8-70,8,8)clear(24,48,42,12)col(0xFFFFFF)rect(-65,-13+12*a=D[23],12,12)C()rect(-65,-13+12*D[23]=a+(j&8&&5>a)-(j&1&&a>0),12,12)
text((k=tick/1000-get)/3600.":".k/60%60.":".k%60,24,48,0)farc(P[1]*8-60,P[0]*8-70,8*i=!i,8)unlock(1)}m=0label 9soft1(m?"買う":"使う";)soft2("戻る")lock()CL()C()for(i=1;i<11;++i){text(IM[i-1],-52,i*12-72,0)}
text(m?"SHOP":"ITEM";,0,-72,i=1)line(-66,-60,66,-60)text(D[10],66,60,8*m)k=0while(64!=j=input(0)
>>12){lock()clear(-66,-59,12,131)text("*",-65,-60+12*k=k+(j&8&&9>k)-(j&1&&k>0),0)if(j&32){if(m&&0<=j=D[10]-IP[k]*50){
D[k+12]++clear(0,60,66,12)text(D[10]=j,66,60,8)}elsif(D[k+12]*!m){D[k+12]--i=1switch(k){case 1:D[22]=0break;case 4:#sub2#
「sub2」
D[3]=D[3]+D[3]*BT/2case 2:case 3:D[j=k-2]=D[j]+D[j]*BT/2break;case 6:K=V&1BT||M[1][x=P[1]+K*H[V]][y=P[0]+!K*H[V]]>2&&IT(x,y);T[0]=0break;case 0:(D[7]=D[7]+200)>HP&&D[7]=HP;break;case 7:trgt(M)C()
for(j=1+200*STA=BT;j<104;++j){if(M[1][a=j%15][b=j/15]==4){farc(a*8+1,b*8+4,8,4)}}trgt(off)origin(width/2,height/2)break;case 8:EN=EN>>BT BT=0break;case 5:EN=EN<<BT break;case 9:for(D[22]=j=0;j<6;++D[j++]){}}}}
clear(30,-59,36,119*i)for(j=-5;i&&j<5;++j){text(m?IP[j+5]*50:D[j+17];,66,j*12,8)}i=0unlock(1)}soft1("EXIT")soft2("MENU")return;func CL(){clear(-66,-72,w,h)}func C(){col(0x400040)}label 3
for(i=0;i<10&&10-i<abs(rand)%15;++i){}D[j=10*!i+!!i*11+i]=D[j]+(i?1:j=abs(rand)%501;)IT(P[1],P[0],1)text((i?IM[i-1]:j."GLD";)."を手に入れた!",0,-6,1)input()goto 1label 4switch(2+j=rand%3){case 0:case 4:
MS=(j-2?(j=5,"金"):"HP";)."半減!"D[j+5]=D[j+5]
>>1break;case 3:case 1:(D[9]=D[9]+j*(1+abs(rand)%10))<1&&D[9]=0;MS=D[9]+1."階へワープ!"break;case 2:MS="ステータス異常!"D[22]=15}
「sub3」
IT(P[1],P[0],1)text(MS,0,-6,1)sleep(1500)goto!(abs(j)==1)func SAVE(){for(_="",j=0;j<24;_=_.D[j++].","){}save(_)}label戦BT=1S=CL()C()frect(MX=-66,-72,w,h)TY=-MY=30BG=0xECD6B4while(BT){lock()clear(-66,-36,w,72)
switch(S){case 0:S=!TX=-1*MX=MX+6break;case 1:sleep(3000)BT=0break;}col(BG)text("(`・ω・´)",TX,TY,0)text("たたかう",0,36,1)text("ぼうぎょ まほう ",0,48,1)text("アイテム",0,60,1)col(BG
>>1)text("( ゚Д ゚",MX,MY,40)
unlock(1)}return;func IT(X1,Y1,W1){C()frect(-67,-10,w+2,20*W1)clear(-66,-9,w,18*W1)trgt(M)clear(X1*8+1,Y1*8+M[1][X1][Y1]=1,8,8)trgt(off)origin(width/2,height/2)}
label死C()frect(-66,-72,w,h)col(0xFFFFFF)text("You are deleted",0,-12,1)text("from this world...",0,0,1)save(0)goto"ー"
スマソ操作方法忘れてた…orz
ダンジョン表示画面
上…前進
左右…向き替え
下…後ろ向き
メニュー画面
上下…集中的に鍛えたいステータスを選択
マップ…四角が壁。コインマークがアイテム。見透しの巻物を使うとトラップの所に落とし穴がでる
ステータス…異常があると表示されます。
アイテム画面
上下…選択
ソフト1…使用
ポーション…HP200回復
万能薬…ステータス異常回復
破砕グラブ…攻撃UP
鉄壁…防御UP
水晶玉…魔・精UP
TNT爆弾…前のアイテム・トラップ破壊
見透しの巻物…トラップがマップで表示される
透明マント…エンカウント半減
マモノ餌…エンカウント2倍
幸せの風…ステータスUP+ステータス異常回復
死ぬと完全に初期化されて1階に戻る
戦闘画面で停止しますた
画面を切り替えるタイミングでは処理が遅くなりがちだからちょっとまったりすれば動くかも
>434氏
すげーな。
携帯BASICで出来るか気になるが。
すげーが俺も止まるんだが
>>,<<,&&,||
これの使い方がよくわからん…
バトルで止まるってどういう風に?操作きかないってこと?
ちなみにバトルは始まると敵が出てきて何かボタンを押すと数秒後にダンジョンに戻るはずだけど
とりあえず戦闘シーンは描画されるが操作不能
initのEN=100というところを0にするとエンカウント率0になるよ
どうですかこれ
やっぱすげーよ。
>434氏
は天才かも?もしくは本物のPGさん?
本物のPGはこんなんやらんだろ、多分。
曲のロードの仕方教えて。
>434氏
auのみ
bgm("タイトル",繰り返し回数)
>434氏優しいですね〜!
俺と>434氏しかいないのか?
ノ
今ゲームシステム練ってる
>>681 簡単でもいいから一通り決めといた法がいいですよ。途中から考えるのは大変だしorz
にしてもSPALMってすげぇスパゲッティプログラムになるよな…
ここは携帯BASICの板でつか?SPALMの板でつか?
簡単な惑星待ち受け。関数Heavenly呼び出しで画面中央に指定半径の木星みたいなのを描画。かなり時間がかかるがきれい
frect(0,0,width,height)func Heavenly(R){origin(width/2,height/2)for(Y=-R;Y<=R;++Y){for(CL=abs(rand)&255,X=R;X--;){
if(0<p=R*R-X*X-Y*Y){
color(c=CL*sqr(p)/R,c,c)line(-X,Y,X,Y)}}}}func sqr($,P){while(P*P++<=$){}return P-2}
lock()Heavenly(20)unlock(1)input()
685 :
初心者○号:2006/01/03(火) 17:47:24 ID:2d1nEB32O
携帯BASICの初心者ですo
frect(80,MAX) input()
みぢかソース
またサイトの解説を読めない人がきたみたいですね…
なんで解説読まないんだ?
687 :
初心者○号:2006/01/03(火) 18:23:19 ID:2d1nEB32O
間違えた
frect(20,80,20,50) input()
魔法エフェクト4種完成。これが一番おもしろかったかも…
それとソースもかなり長くなりそうだがその説明もかなり長くなりそう
説明ってどこまで必要?
端的で結構
OK
ドコモってfoval関数使えるよね?
イエス
fovalテスト
col(0x808080)frect(0,0,width,height)@(A,1,1,2,3,2)origin(66,72)label 0lock()if(input(0)){end}col(0xFFFF)foval(-60,-60,120,120,0,180)col(0x80FF)farc(-60,-30,120,60)for(i=0;i<5;++i){
if(++A[i]%4==0){A[i]=0while(X=X[i]=rand%54,Y=Y[i]=-abs(rand)%54,X*X+Y*Y>2809){}}}col(0xCFFFFF)for(i=0;i<5;++i){farc(X[i]-X[i]*A[i]/4-7,Y[i]-Y[i]*A[i]/4-7,14,14)}unlock(1)goto 0
695 :
初心者○号:2006/01/09(月) 10:54:18 ID:seHJbzcCO
黒い四角の中に緑の四角を表示する処理
soft2("END")
label 0
color(0,0,0)rect(5,5,200,200)color(0,255,0)frect(50,50,100,100)color(50,50,50)text("2chサイコー!!",28,28) if input(0)=keysoft2 then exit endif
goto 0
遊んでたら触手ができた。
soft1("EXIT")origin(w=width/2,h=height/2)X=60D=6col(0xFF00FF)label 0if(32&S=scan
>>12){end}lock()clear(-w,-h,w+w,h+h)arc(X=X+(!!(S&4)-!!(S&2))*10,Y=Y+(!!(S&8)-!!(S&1))*10,7,7)for(H=atan(X,Y),C=0;C<D;++C){
for(B=5-10*(H>179?1-V():V();),A=C;A<D;T[A]=T[A]+B,++A){}}for(A=0;A<D;X[A+1]=X[A]+cos(T[A])/12,Y[A+1]=Y[A]+sin(T[A])/12,++A){farc(X[A],Y[A],8,8)}unlock(1)goto 0func atan(x,y){if(x){
for(t=abs(100*y/x),i=-1;t>tan(i=i+10);){}for(;t<tan(i);--i){}(y<0^x<0&&i=360-i,x<0&&i=540+i)}else{i=y<0?270:90;}return i%360}func V(){return(H+180)%360<(t=(T[C]%360+360)%360)^t>H}
ちなみに腕の長さは最初の方のD=6ってとこを変えればいけます
んで。SPAML用かい?
BASIC用
【無題】
lock()color(250,250,100)frect(100,130,25,25)frect(95,140,35,10)color(0,0,0)frect(95,155,35,20)frect(90,160,45,10)frect(100,155,25,35)frect(95,180,35,20)frect(100,140,10,5)frect(115,140,10,5)color(255
,255,255)frect(90,165,10,15)color(155,155,155)frect(90,165,5,5)frect(85,165,5,15)if input(abs(rand)%100+1/1000) and keyselect thencolor(255,0,0)
続き
frect(120,165,10,5)frect(125,175,5,5)frect(115,160,5,5)elsecolor(255,0,0)farc(50,50,200,200)endifsoft1("終わり")label 0if input(0) and keysoft1 then exit endifgoto 0
seHJbzcCO
お前もう少し勉強してからこい!
702 :
小4の人:2006/01/09(月) 23:28:43 ID:seHJbzcCO
label 0
farc(50,80,80,50)line(20,20,50,50)frect(0,50,50,30)
soft2("END") if input(0)=keysoft2 then exit endif
goto 0
こんぐらいしろよ
703 :
ゆういち:2006/01/11(水) 15:47:18 ID:ReGWapAcO
遊んでたらこんなんできたが?
【落とし穴?】
label 0
soft2("Exit")
farc(50,50,80,20)if input(0)=key then exit endif
goto 0
( `ノ゚A゚)ヒソヒソ
706 :
小4の人:2006/01/11(水) 22:29:30 ID:ReGWapAcO
>434氏は昔マリオとゆうかムリオとゆうか……を作ったんですね。
708 :
小4の人:2006/01/11(水) 22:40:02 ID:ReGWapAcO
はいはい!!消えますよ〜だ!!(この板は優しい奴居ねーのか?すぐ「消えろ」とか「氏ね」とか「マジレス!○は氏んでよし!」とかゆう奴ばっか。氏ねとか言った奴は警察に捕まれってんだよ)
氏ねとは言わないが(言ってないが)、他のスレに行ってくれ。おまいは迷惑だ
710 :
非通知さん@アプリ起動中:2006/01/12(木) 19:00:26 ID:wsuQq2MmO
if q<1then n=2endif
q=rand%n
712 :
非通知さん@アプリ起動中:2006/01/13(金) 20:53:09 ID:V+EfkPvwO
うめ
713 :
非通知さん@アプリ起動中:2006/01/13(金) 20:54:41 ID:V+EfkPvwO
うめ
ID:ReGWapAcO 釣り下手すぎて笑えん
715 :
非通知さん@アプリ起動中:2006/01/15(日) 05:37:48 ID:aOi3Y1KLO
ヴァイブ
label 0
if input(0)=key2 then onvib() endif if input(0)=key1 then offvib() endif if input(0)=key3 then exit endif
goto 0
ランダム数値
soft2("EXIT")
A=abs(rand)B=abs(rand)C=abs(rand)a=abs(rand)b=abs(rand)c=abs(rand)
label 0
text(A+"/"+a,0,12)text(B+"/"+b,0,28)text(C+"/"+c,0,42)if input(0)=keysoft2 then exit endif
goto 0
717 :
非通知さん@アプリ起動中:2006/01/15(日) 12:19:33 ID:aOi3Y1KLO
ログ読んだ。ゆういちとかゆうくそがいるみてえだがもう居ねーよな?
>>717 ゆういちはお前だろ。糞なソースアップしやがって
まあ…ゆういちにしては頑張った方だと思う
ゆういち、そのランダム数値を利用してRenderModeが作られているのがわかるか?
>>719 そうか?
てかSPALMにrmode()がないのが痛い。
721 :
非通知さん@アプリ起動中:2006/01/15(日) 17:29:27 ID:aOi3Y1KLO
もっと勉強して戻ってきます。
>>雄一
あんなもんいちいちうpすんな!!!!
普通の人ならあんなのただの通過点
>>722 たぶん自分では凄いと思っていたんだろうな。
プログラムアップ板にも馬鹿ゆういち製の、糞なプログラムのがあった。
soft2("EXIT")
label 0
R=abs(rand)%255G=abs(rand)%255B=abs (rand)%255
text("select...四角表示",0,12)if input(0)=keyselect then clear(50,50,50,50)color(R,G,B)frect(50,50,50,50) endif if input(0)=keysoft2 then exit endif
goto 0
うむ、ゆういちも少し分かって来たんじゃないだろうか
次はそのカラーチェッカーのRGBを自分で調整できるようにしてみろ。
726 :
非通知さん@アプリ起動中:2006/01/16(月) 00:33:02 ID:TBeqDAooO
俺以外のボーダの人いないかな。
今んとこプログラム+セーブデータで7500byteぐらいでメモリの占有率は俺の携帯で400Kbyte超
もうギリギリ…ストーリー的なとこもつけようとおもってたんだけど厳しいからいらないよね?エンドレスってことで、、、
とりあえずこっちで100階までやってエラーなかったらうpるわ
soft2("END")
label 0
R=0r=0g=0b=0
text("■",0,12)text("R="+r,0,28)text("G="+g,0,42)text("B="+b,0,58)if input(0)=keyselect then r=abs(rand)%255g=abs(rand)%255b=abs(rand)%255color(r,g,b)text("R="+r,0,28)text("G="+g,0,42)text("B="+b,0,58) endif if input(0)=keysoft2 then end endif
goto 0
自分でRGB調整は出来ないけどRGBの表示は可能。だけどselectを押すたびにどんどん数字が埋まるのですが…どうしたら良いでしょうか…
>>729 才能無いからプログラミングなんてやめろ
{ィャタ"…何時間もかけて作ったのを認められない世の中なんて…死のう…こんな世の中なんて…一切無しになれば良いのに…死のう…川に飛び込むか首吊りで…もうこんな人生!!
732 :
非通知さん@アプリ起動中:2006/01/17(火) 14:44:03 ID:u3xxSPg3O
でもまだ死なない…人生最後まで生きぬいて…最後まで…よし!決めた…折れはプログラマーになってやる…
> 何時間もかけて作ったのに……
そんなこと言ってる時点でおまいはマに向いてない。
やめといたほうがいい。地獄をみるぞ。
てな事言う割に他人のプログラムのパクリじゃないか
何が何時間も掛かっただよ
努力は認めるが、重なる文字をclear()で消してtext()、
もしくは背景色でfrect()で上書きした上にtext()くらい思いつかんとな
735 :
非通知さん@アプリ起動中:2006/01/17(火) 17:49:49 ID:u3xxSPg3O
label cls
rmode(0,255,255)
color(0,0,0)
frect(0,0,width,height)
rmode(1,255,255)if input(0)=keyselect then end endif
goto "cls"
やっと出来た〜…
X=0Y=12soft2("END")
label 0
color(0,0,0)text("□",X,Y)if input(0)=keydown then Y=24color(255,255,255)text("□",0,12) endif if input(0)=keyup then Y=12color(255,255,255)text("□",0,24) endif if input(0)=keysoft2 then end endif
goto 0
シレンぽいものも作ったけど結構重いし敵の体力減らないし…
違うんだよゆういち。
下キーを押すたびにYが12増えるようにするんだ。
Y=Y+12 って具合に。
もしくはtext("□",X,Y*12)ってして、Y=Y+1 でもいい。
ここまでマスター出来たら、□の新しい位置描画、それまでの□位置の消去、そしてlock()unlock()の使い方を勉強するといい。
739 :
1/2:2006/01/17(火) 20:50:45 ID:u3xxSPg3O
最=15現=15HP=8X=HP2=8X=20Y=12x=20y=58攻=abs(rand)%8功=abs(rand)%3soft2("END")
label 0
color(0,0,0)text("HP:"+最+"/"+現,0,80)text("主人公",X,Y)text("敵",x,y)text("敵HP:"+HP+"/"+
740 :
2/2:2006/01/17(火) 21:06:52 ID:u3xxSPg3O
HP2,0,150)if input(0)=keydown then Y=24y=44color(255,255,255)text("主人公",20,12)text("敵",20,58) endif if input(0)=keyselect then text("主人公の攻撃!"+"敵に"+攻+"のダメージ!",0,255) endif if input(0)=keysoft2 then end endif
goto 0
>738-739
これが問題のシレンぽいやつ
>>741 2次元配列も知らんやつに作れるかよボケ茄子
743 :
非通知さん@アプリ起動中:2006/01/18(水) 01:13:00 ID:S7fn8y86O
>725さんの言ってたRGB操作できる版
r=0g=0b=0soft2("END")
label 0
text("■",0,58)if input(0)=keyup then r=r+10color(r,g,b)text("■",0,58) endif if input(0)=keyright then g=g+10color(r,g,b)text("■",0,58) endif if input(0)=keyleft then b=b+10color(r,g,b)text("■",0,58) endif if input(0)=keysoft2 then end endif
goto 0
744 :
138:2006/01/18(水) 01:16:35 ID:S7fn8y86O
おっと名前載せ忘れてた。(sageもww
745 :
138:2006/01/18(水) 02:53:26 ID:S7fn8y86O
>742
2次元配列はしらんが配列はこうやろ?
変数 [index]
こうやろ?ちゃんとサイト見てきたもん!
746 :
138:2006/01/18(水) 03:38:57 ID:S7fn8y86O
700超したソース作ったけどエラーで強制終了…また作り直しかよ…
>>745 お前は屑で馬鹿で間抜けだな。
しかも、テメー、なんかタメ口だし本当に屑やろうだな。
ただの配列を二次元配列とかいってやがるプゲラッチョww
本当プログラマーにならない方がいいよあんた。
こういっちゃなんだけどプログラマーとしての才覚がない。
まずセンスが無い、それといちいち愚痴を溢すなマジで、10時間なんて当たり前。
皆努力してるのにお前は何様だ。
あと訳もわからずあげんな
748 :
138:2006/01/18(水) 14:48:28 ID:S7fn8y86O
俺の気持ちも知らずにズケズケベラベラズケズケベラベラと〜!!とここで怒ってもしょうがないので…他でやろ〜ね〜(`〜´)
749 :
138:2006/01/18(水) 14:51:41 ID:S7fn8y86O
>747
荒すなら他でやれや!あんゴルァ$OT
iro[0]=40
iro[1]=80
iro[2]=120
iro[3]=160
iro[4]=200
iro[5]=240
label 0
s=scan
color(iro[R],iro[G],iro[B])
text("■■■ @色成分 R"+iro[R]+"/G"+iro[G]+"/B"+iro[B],20,20)
if input()and key1 and R<5 then R=R+1
elseif s=key4 and R>0 then R=R-1
endif
goto 0
上の6行が二次元配列。
どうやって使ってるか理解してみれ。
751 :
138:2006/01/18(水) 14:55:58 ID:S7fn8y86O
そうさ…俺は人のコピーしてやって面白かったら保存しっ放しで…そう…俺はクズ人間なんだ…面白くなかったら消し…やれなかっても消し…もう謝るよ…こんな人生に生まれて来てすいません!!
すまんな、こっちで。
iro[0]=40
iro[1]=80
iro[2]=120
iro[3]=160
iro[4]=200
iro[5]=240
label 0
s=scan
clear(0,0,width,height)
color(iro[R],iro[G],iro[B])
text("■■■ @色成分 R"+iro[R]+"/G"+iro[G]+"/B"+iro[B],20,20)
if input()and key1 and R<5 then R=R+1
elseif s=key4 and R>0 then R=R-1
endif
goto 0
下から4行目くらいのところ、一部iMonaでは
半角の >0 が >1 になるみたいだ
すまんが自分で書き換えてくれ
>>751 まさにその通りだ、今のお前ではなんの飛躍も無く終わるだろうな。
何もそこまで言わんでいいがな…
>>750 それは一次元配列。二次元配列ていうのは
X[i][j]
↑こういうのを言う。つまり[]の数がその配列の次元
ちなみにSPALM/携帯BASICでは何次元配列でも可能。もちろん少ない方が処理は軽い。[]内が数字じゃなくても可。
>>755 唯一、まともにプログラミング出来そうな方ですね。
自分なら二次元配列を使ってRPG系ゲームのアイテム管理等に使います。
でも確かに使う場所を選びますね、動作速度に影響が出るのが一番恐いので‥
>>756 うわ…やっちまったorz
携帯BASICは久しく触ってなかったから思い違いしてた
フォローありがトン
というわけでゆういち、すまんかった。忘れてくれ…
携帯Bで配列は難しいな…
RGBが789でも操作できる版
r=0g=0b=0soft2("END")
label 0
text("■■■",0,12)text("←B+↑R+→G+○リセット↓RGB-",0,28)text("7Rmax8Gm
ax9Bmax",0,42)if input(0)=keyup then r=r+20color(r,g,b)text("■■■",0,12) endif if input(0)=keyright then g=g+20color(r,g,b)text("■■■",0,12) endif if input(0)=keyleft then b=b+20color(r,g,b)text("■■■",0,12) endi
f if input(0)=keydown then r=r-20g=g-20b=b-20color(r,g,b)text("■■■",0,12) endif if input(0)=keyselect then r=0g=0b=0color(r,g,b)text("■■■",0,12) endif if input(0)=key7 then r=255color(r,g,b)text("■■■",0,12) endif if input(0)=
key8 then g=255color(r,g,b)text("■■■",0,12) endif if input(0)=key9 then b=255color(r,g,b)text("■■■",0,12) endif if input(0)=keysoft2 then end endif
goto 0
3/3のはずが4/4になってしまった…
763 :
138:2006/01/18(水) 20:08:34 ID:S7fn8y86O
間違えてた
×
text("■■■",0,12)text("←B+↑R+→G+○リセット↓RGB-",0,28)text("7Rmax8Gmax9Bmax",0,42)
○
color(r,g,b)text("■■■",0,12)color(0,0,0)text("←B+↑R+→G+○リセット↓RGB-",0,28)color(0,0,0)text("7Rmax8Gmax9Bmax",0,42)
×のままやると7と8と9を押したら何もなくなります。(○を押したらすぐ治るけどww
764 :
138:2006/01/18(水) 21:28:11 ID:S7fn8y86O
ここまで書き込みがないのに驚いたので100ヘェね。所でうp板のブロック崩し FOR 携帯BASIC ってだれがうpしたの?
>>764 お前物凄く偉そうだよな、それが人に物を聞く態度かと言いたい。
766 :
138:2006/01/18(水) 21:53:46 ID:S7fn8y86O
じゃあ「所でうp板のブロック崩し FOR 携帯BASIC は誰がうpしたのですか?優しい方は答えてください。お願いします。」でいいんですかそうですか。
>>766 まだ足りない。
お前の様な能無し愚民は、もっと我々高等人類様に尊敬の意を示せ。
『でいいんですかそうですか』自己解釈してるお前は、まさに進歩しない人間の典型。
769 :
138:2006/01/18(水) 22:57:58 ID:S7fn8y86O
じゃあ「聞きたいことが在るんですけど…皆様うp板にブロック崩し FOR 携帯BASIC をうpした人を知りませんか?このクズで虫けらな俺に教えてくれださい!お願いします!」でいいんですかそうですか。
770 :
138:2006/01/18(水) 23:03:00 ID:S7fn8y86O
>お前の様な能無し愚民
この言い方は酷い。あと高等人類と自分の事を言うようなやつの方が能無し愚民だと思う。逆に人間を怒らしたらどうなるか知らないような人間はお前の方だと思う。
771 :
138:2006/01/18(水) 23:04:00 ID:S7fn8y86O
>人間を怒らしたらどうなるか知らないような人間はお前の方だと思う。
これは言い過ぎた。
>>769 てか今思ったんだけど、お前は人間に質問するな。
773 :
138:2006/01/18(水) 23:13:25 ID:S7fn8y86O
>772
偉そうにしてんのはお前じゃねーの?俺は携帯BASIC初心者なんだぞ?優しい心が一つもねーな。せめて
>お前の様な能無し愚民
これは言い過ぎた。
ぐらいいえよ。お前、大統領じゃないくせして偉そうにして、お前優しくしたことね〜だろ?$OT$OT
774 :
138:2006/01/18(水) 23:18:04 ID:S7fn8y86O
>1を見ろ!>1を!
ろぐだが>823センセは優しかったみてーだな…>823センセが残ってたらな〜…まぁムリオを作った>434氏が残ってただけでうれしいぜ
大統領なら言ってもいいのか‥
まあ、その様な解釈しか出来ないお前は、もはや愚民とも言えない。
お前は言葉を話せる真菌類だ。
てか真菌類に失礼だったな。
ここを借りて、改めて謝る。すまない真菌類の諸君。
こいつは、愚の塊。
777 :
138:2006/01/18(水) 23:30:59 ID:S7fn8y86O
>お前は言葉を話せる真菌類だ。
ついでにお前は言葉を話せ、携帯もってて、2ch来てる真菌類だ。にして
お前はこれ迄アゲ荒らし行為、自作自演等をしてきたが、今までの書き込みでの話し方を改め謙虚になるのなら、普通に会話してもいい。
もう何でもいいがこれ以上スレを荒らすんだったらよそでやってくれ、ここのレベルが下がる…
ちなみにブロック崩しは俺ね
780 :
138:2006/01/18(水) 23:45:00 ID:S7fn8y86O
謙虚になるかもな。
>>779 不快な思いをさせてすいませんでした。
PG板に戻ります。
でも
>>138もかなりの荒らしだと思います。
782 :
138:2006/01/19(木) 00:48:53 ID:4ptTG2NLO
>779
ほんとにすいませんでした。
>781
ほんとすまねぇ……
783 :
138:2006/01/19(木) 00:49:38 ID:4ptTG2NLO
>781
>ほんとすまねぇ……
間違った
本当にすまなかった…だった
784 :
138:2006/01/19(木) 00:51:25 ID:4ptTG2NLO
所でPG板て?
soft2("END")
label 0
text("■",0,12)text("R="+r,0,28)text("G="+g,0,42)text("B="+b,0,58)if input(0)=keyselect th
en r=abs(rand)%255g=abs(rand)%255b=abs(rand)%255clear(0,12,90,100)text("R="+r,0,28)text("G="+g,0,42)text("B="+b,0,58)color(r,g,b)text("■",0,12) endif if input(0)=keysoft2 then end endif
goto 0
操作説明はうp板にて
787 :
138:2006/01/19(木) 06:28:09 ID:/9uFrcyeO
X=0Y=58x=12y=28
label 0
text("人@下で下へ",X,Y)text("人A上で下へ",x,y)if input(0)=keydown then Y=Y+12clear(0,0,280,280)text("人Aの番です",0,80) endif if input(0)=keyselect then end endif if input(0)=keyup then y=y+12clear(0,0,280,280)text("人@の番です",0,80) endif
goto 0
788 :
138:2006/01/19(木) 22:31:34 ID:/9uFrcyeO
X=0Y=255
label 0
text("人",X,Y)text("現在地:"+X+"/"+Y,0,12)if input(0)=key3 then X=X+12Y=Y-12clear(0,0,280,280)text("人",X,Y)text("現在地:"+X+"/"+Y,0,12) endif if input(0)=key0 then end endif
goto 0
現在地:X/Yに表示されている場所 例)現在地:0/255
に人はいます。
X=0Y=12
label 0
text("人",X,Y)text("現在地:"+X+"/"+Y,0,255)if input(0)=keydown then Y=Y+12clear(0,0,280,280)text("現在地:"+X+"/"+Y,0,255) endif if input(0)=keyselect then end endif if input(0)=keyup then Y=Y-12clea
r(0,0,280,280)text("現在地:"+X+"/"+Y,0,255) endif if input(0)=keyright then X=X+12clear(0,0,280,280)text("現在地:"+X+"/"+Y,0,255) endif if input(0)=keyleft then X=X-12clear(0,0,280,280)text("現在地:"+X+"/"+Y,0,255) endif goto 0
正直同じようなのいくつも貼られるとちょっと邪魔に感じる。
そんなに頻繁にソースうpするとまたいろいろ言われるぞ。
793 :
138:2006/01/20(金) 19:17:01 ID:jjXObn8VO
572文字位のシレン風のを作った。だけど…上下左右に動かしたらランダムで満腹度が減るだけのやつ。シレン作ってる人は使ってください。(コピー可)
794 :
138:2006/01/20(金) 22:37:44 ID:jjXObn8VO
マジのシレン作ってたけど挫折…代わりにシレン作った時の副産物を置いときます。
【迷路?】
text("■",0,12)rect(0,0,70,70)text("□",60,75)input()
■がスタートで□がゴール。(未完成だがww
>434氏の惑星簡易発生機は出来なかったけどやりたいから自分で作りました。(すぐに緑の惑星?が見れるがww
[緑の惑星発生機]
color(0,0,0)frect(-1,-1,280,280)color(0,255,0)farc(50,50,150,150)input()
みぢかいね。
小四にはやっぱプログラミングは早すぎたんだよ、惑星って…
HSPっていうプログラム言語なら10歳でゲーム作ってる人もいるからそっちやってみたら?>ユウイチ
とにかく馬鹿ゆういちは、ここから消えろ
あれ、本当にゆういちって小4なのか…?
まぁ大分作り方が分かってきたみたいだし次は簡単なオリジナルゲームを作ってみろ。
ただし、自力で完成させられるまではこのスレに書き込まない事。
自分のアイデアを実現させる工夫と努力をするんだ。
最初はパクリでもいい。そこからいろいろいじって学ぶ事もある。
学ぶ気持ちがあれば、やがては自分の力になるんだよ。
forの文の意味も分からない奴が消えろ
いきがってた厨房を優しく諌めながら生暖かく見守るスレはここですか?(・∀・;)
't=競技時間' t=500 p=100 h=120
label 0
if h<0 then m=m+1 h=120 endif
h=h-3 t=t-1
if scan=keyselect and p>40 then p=p-3 elseif p<100 then p=p+3 endif
if p=100 then s=s+(120-h) endif
lock()
clear(0,0,150,120)
text("",25,p)text("┏┓",h,96)text(s+"pts / TIME:"+t,10,20)
if p>93 and h<30 and h>15 then goto 1 elseif t=0 then goto 1 endif
unlock(1)
goto 0
label 1
text("Game set!",40,60)text(s+" PTS / "+m+" HDL",2,75)
unlock(1)sleep(999)clearinput()input()
だってHSPどこにも売ってないし買ってもらえないし
HSPダウンロード出来へん
*と#をendにしたい場合はどうすれば委員でしょうが(しょうかww
例1… if input()and keyast then exit endif
例2… if scan=keyast then exit endif
*…keyast
#…keypound
X=0
label 0
lock()text("◆",X,12)if input(0)=AI then X=X+1sleep(1000)clear(0,0,280,280) endif if input(0)=key0 then end endif
unlock(1)
goto 0
Xを50で止めたりタイムを0で止めてから文字を表示はどうすれば委員でしょうが(聞き飽きたww
X<50
こんな感じ?それとも
X>50
こんな感じ?
815 :
非通知さん@アプリ起動中:2006/01/23(月) 01:30:23 ID:hImkorrAO
>813
えと.X>50はX>と50ですから>50じゃありません。
何だろう、この違和感…ふ●っくて…
ふ●っく?
一応SPALM用ダンジョンRPG完成したけどどこにアップすればいいかな?ファイルが8個なんだが
>>ユウイチ
HSPは無料だ。パソコンでダウンロードすれば夢の世界が広がってるぞ。親切に教えてくれる人もたくさんいるし
俺…携帯しか持ってへんわ…
>>820 なら消えろとしか、言い様が無い。お前はもう少しましなのを作ってからこの板に再び来い。
>>819 ここでいいと思われ。
でオマイを、中々の使いとみこんでローグについて聞きたい事があるんだが。
frectをランダムに置いて部屋を作ってるのか?
それともsubstringsで空間を四角く囲んで、その中を歩けると言う事にすればいいのか?
てかローグのソースはどうなってるんだ?
残念ながら俺のは通路式。棒倒し法って言う簡単なアルゴリズムで迷路を生成してる
表示も3Dだから通路式の方が都合がよかったというのもあるな
明日あたりうpすると思う
「単純☆ダンジョン」
#init#M[1][i+x][j+y]=M[0][j+y][i+x]=0}}trgt(M)lock()clear(0,0,122,58)C()rect(0,0,121,57)for(i=0;i<120;i=i+8){for(j=0;j<56;j=j+8){switch(M[1][i
>>3][j
>>3]){case 0:frect(i+1,j+1,8,8)break;
case 3:frect(i+3,j+3,4,4)frect(i+4,j+2,2,6)clear(i+4,j+3,1,3)}}}trgt(off)M[1][14][6]=2origin(w2,h2)soft1("EXIT")soft2("MENU")label 1if(1<<18&A){gosub"図"}lock()if(CL()+C()+1<<17&A){end}B=0if(1&A=A
>>12){
if(M[j=V&1][P[j]+H[V]][P[1-j]]){P[j]=P[j]+H[V]B=1}}elsif(A&14){V=1+V+A+A/8&3}text("方位:".strat(N,V).";座標(".P[1].",".P[0].")",-66,-72,0)line(-62,-62,62,62)line(-62,62,62,-62)for(i=0;i<5;++i){
if(j=H[4+i],M[K=V&1][P[K]+i*H[V]][P[!K]]){for(k=i
>>2<<1;k<2;++k){if(M[K][P[K]+i*H[V]][P[!K]+H[k]*(1-(V
>>1<<1))]){rect(-H[4+i+k],-l=H[5+i],l+j,l+l)}}rect(-j,-j,j+j,j+j)}else{frect(-j,-j,j+j+1,j+j)break}}farc(-10,40,20,5)
col(0x80FE)frect(-8,12,16,30)unlock(1)if(I=M[1][P[1]][P[0]],B&&I==1){if(R(2000)<EN){gosub"戦"}elsif(D[22]&2){D[7]=D[7]-HP/100}if(D[7]<1){goto"死"}}#sub##sub3#
「init」
makeimg(M,122,58)@(m,"戦う","防御","魔法","アイテム")@(E,"(`・ω・´)","シャキーン",10,16,12,8,7,14,5,"Γ(◎±◎∂","タルー",12,5,5,16,16,9,14,"ミ゚Д゚ 彡","フサギコ",15,8,16,7,14,7,5,"∠@∀@∇","チャメコ",7,9,9,11,16,12,
13,"〇£〇ヶ","プリマ",20,20,0,20,0,10,20,"( ゚Д ゚","ソリタリー")w=132h=144@(H,-1,1,1,-1,62,25,15,11,8)@(IM,"ポーション","万能薬","破砕グラブ","鉄壁","水晶玉","マモノ餌","TNT爆弾","見透しの巻物","透明マント","幸せの風")
@(IP,1,3,4,4,6,6,10,10,10,200)N="北東南西"frect(C(),0,2*w2=width/2,2*h2=height/2)labelーorigin(w2,h2)if(!load()){@(D,5,5,5,5,5,5,1,300,0,1,0,0,9,9,9,9,9,9,9,9,9,9,0,0)V()}k=load()
for(i=0,j=-1;i<24;D[i++]=substr(k,++j,-j+j=index(k,",",j))){}get=tick/1000-D[11]V=-1--D[9]LV=D[6]HP=LV*LV+237*LV+362
>>1label 0gc()if(m=++D[9]%10==0&&V>=0){gosub 9}EN=100
for(P[V=1]=P[0]=B=i=0;i<105;M[1][i%15][i/15]=M[0][i/15][i++%15]=1){}for(i=1;104>i=i+1+R(40);M[1][i%15][i/15]=3+(rand&1)){}
for(i=1;i<15;i=i+2){for(j=1;j<7;M[1][i][j]=M[0][j][i]=0,j=j+2){while(!M[1][i+x=rand%2][j+y=x?0:(rand&1)*2-1;]){}
「sub」
I<3&&A=input();goto I label 2if(!B){goto 1}clear(-27,-15,54,30)C()rect(-28,-16,55,31)text("1.おりる",-24,0,32)text("2.やめる",-24,1,0)unlock(1)B=0while(!(A=input()&6)){}goto A
>>2 label図lock()drawimg(M,-61,-71,CL(C()))for(i=0;i<6;++i){text(substr("Lv HP EXPFLRGLDTIM",i*3,3).":".D[i+6],0,i*12-12,0)text(strat("強耐魔精早運",i).":".D[i],-64,i*12-12,0)}text("ST",-64,60,0)for(i=0;i<4;++i){
if(D[22]&1<<i){text(strat("闇毒混沈",i),-52+i*12,60,0)}}text("MaxHP:".HP,0,60,0)soft1("SAVE")soft2("ITEM")C()while(64!=(j=input(0)
>>12)&&(j&32&&j=V(D[11]=k),1)){lock()clear(P[1]*8-60,P[0]*8-70,8,8)
clear(24,48,42,12)col(0xFFFFFF)rect(-65,-13+12*a=D[23],12,12)C()rect(-65,-13+12*D[23]=a+(j&8&&5>a)-(j&1&&a>0),12,12)text((k=tick/1000-get)/3600.":".k/60%60.":".k%60,24,48,0)
farc(P[1]*8-60,P[0]*8-70,8*i=!i,8)unlock(1)}m=0label 9soft1(m?"買う":"使う";)soft2("戻る")lock()CL()C()for(i=1;i<11;++i){text(IM[i-1],-52,i*12-72,0)}
text(m?"SHOP":"ITEM";,0,-72,i=1)line(-66,-60,66,-60)text(D[10],66,60,8*m)k=UC=0#sub2#
「sub2」
while(!(J&32&&BT&&UC)&&64!=J=input(0)
>>12){lock()clear(-66,-59,12,131)text("*",-65,-60+12*k=k+(J&8&&9>k)-(J&1&&k>0),0)if(J&32){if(m&&0<=j=D[10]-IP[k]*50){D[k+12]++
clear(0,60,66,12)text(D[10]=j,66,60,8)}elsif(D[k+12]*!m){UC=1D[k+12]--i=1switch(k){case 1:D[22]=0break;case 4:M[3]=M[3]*3/2case 2:case 3:M[j=k-2]=M[j]*3/2PD=PD|k==3break;case 6:
K=V&1BT||M[1][x=P[1]+K*H[V]][y=P[0]+!K*H[V]]>2&&IT(x,y);D[31]=0break;case 0:(D[7]=D[7]+(M[3]+M[2])*18)>HP&&D[7]=HP;break;case 7:trgt(M)C()for(j=1+200*STA=BT;j<104;++j){
if(M[1][a=j%15][b=j/15]==4){farc(a*8+1,b*8+4,8,4)}}trgt(off)origin(w2,h2)break;case 8:if(BT){S[l=0]="逃げ出した!"}EN=EN>>!BT break;case 5:EN=EN<<!BT
D[29]=Mh break;case 9:for(D[22]=j=0;j<6;++D[j++]){}D[7]=HP}}}clear(30,-59,36,119*i)for(j=-5;i&&j<5;++j){text(m?IP[j+5]*50:D[j+17];,66,j*12,8)}i=0unlock(1)}
soft1("EXIT")soft2("MENU")}func CL(){clear(-66,-72,w,h)}func C(){col(0x400040)}label 3for(i=0;i<10&&10-i<R(15);++i){}D[j=10*!i+!!i*11+i]=D[j]+(i?1:j=R(501);)
「sub3」
IT(P[1],P[0],1)text((i?IM[i-1]:j."GLD";)."を手に入れた!",0,-6,1)input()goto 1label 4switch(2+j=rand%3){case 0:case 4:MS=(j-2?(j=5,"金"):"HP";)."半減!"D[j+5]=D[j+5]
>>1break;case 3:case 1:
(D[9]=D[9]+j*(1+R(10)))<1&&D[9]=0;MS=D[9]+1."階へワープ!"break;case 2:MS="ステータス異常!"D[22]=15}IT(P[1],P[0],1)text(MS,0,-6,1)sleep(1500)goto!(abs(j)==1)func V(){for(_="",j=0;j<24;_=_.D[j++].","){}
save(_)}label戦BT=1S=CL()C()clearkey()soft1("")soft2("")for(ExP=D[31]=Mh=((237+i=D[9])*i+362+rand%i
>>1)*E[2+ET=R(17)/4*9]/10,D[46]=j=STA=0;j<6;ExP=ExP+D[24+j]=(4+i)*E[ET+3+j]/10+rand%i/2,++j){}
copy(D,d[0]=d[24]=PD=0,M,0,28)clip(TY=MX=-TX=66,-72,w,h)MY=30AT=(D[28]<D[4])*24BG=0xECD6B4while(BT){lock()line(CL()-66,36,w,36)col(BG)text(E[ET],TX,TY,0)text(D[31]."/".Mh.":".D[46],60-999*!STA,-54,8)
col(BG
>>1)text(E[45],MX,MY,32)text(D[7]."/".HP.":".D[22],-60,6,0)switch(A=input(C()),S){case 0:if(!TX=TX-6){S=2S[j=0]=E[ET+l=k=1]."が現れた!"}break;case 1:#sub4#
「sub4」
if(AT){ET?ET-9?ET-18?ET-27?Z=2*(D[31]<Mh/2)+R(2):D[31]<Mh?Z=3:Z=R(2);;:(Z=!!R(5))||(Z=!R(2)*3)||Z=R(2);:(Z=!!R(10)*2)||(Z=R(3))&&++Z;:(Z=!R(10))&&Z=1+R(3);S=2S[j=0]=E[ET+k=1]."のターン!!"l=3+Z}else{
rect(-66,25,48,48)clear(-66,26,48,48)for(a=0;a<4;++a){text(m[a],-48,26+a*12,0)}if(16&a=A
>>12){S=2k=1l=Z+3S[j=0]="ソリタリーのターン!!"}text("*",-60,26+12*Z=Z+(a&8&&Z<3)-(a&1&&Z),0)
(D[7]=D[7]+d[0]*HP/10)>HP&&D[7]=HP;}d[AT]=0break;case 2:if((3>k-j=j+(1<<16==A))&&j){Z=0if(1==S=l){(D[22+AT]&2&&!ヘ)?(D[a=7+AT]=D[a]-D[33-a]*6,S=ヘ=2,S[j=!k=1]="毒のダメージ!"):e=24-AT=24-AT+ヘ=0;}
if(BT=D[7]>0&&l>0,2<S){if(4&i=D[22+AT]){S=3e=R(2)*24}if(i&8&&S==5){S=2k=l=1S[j=0]="魔法失敗…"}}if(BT&&D[31]<1){S=2l=j=0k=3TX=99@(S,E[ET+1]."を倒した!",D[29]*10."GLD入手!",ExP/10."の経験値を得た","レベルアップ!")
D[10]=D[10]+D[29]*10D[8]=D[8]+ExP/10while(HP<=D[8]){a=++D[6]D[8]=D[8]-HP D[7]=HP=a*a+237*a+362
>>1for(i=!D[D[23]]++;i<6;D[i++]++){}D[22]=0k=4}}}else{for(i=0;i<3&&i<k;++i){text(S[i+j],-66,36+i*12,0)}}break;case 3:#sub5#
「sub5」
if(D[AT+22]&1&&(D[4]<D[28]||rand%9)){k=1S[0]="攻撃失敗…"}else{(i=rand%D[9]+(14+M[AT]/8)*M[AT]-(6+M[e+1]/12)*M[e+1]>>d[e])<0&&i=0;(D[k=7+e]=D[k]-i)<0&&D[k]=0;@(S,E[e?ET+1:46;]."に".i,"のダメージ")D[k=22+e]=D[k]&~4k=2}
S=2l=1j=0break;case 4:d[AT]=l=k=1S[j=0]=E[AT?ET+1:46;]."は身を固めた"S=2break;case 5:(i=rand%D[9]+(14+M[AT+2]/8)*M[AT+2]-(6+M[e+3]/12)*M[e+3]>>d[e])<0&&i=0;(D[k=7+e]=D[k]-i)<0&&D[k]=0;
@(S,E[e?ET+1:46;]."に".i,"のダメージ")`=0if((!PD||--PD||e)&&!d[e]&&abs(rand%i)>D[e+5]-D[AT+5]){D[22+e]=D[22+e]|`=R(16)&R(16)}gosub 20l=1S=k=2j=0break;case 6:if(AT){
D[31]=(i=D[31]+D[27]*14)>Mh?Mh:i;D[46]=D[46]&~R(16)S[0]=E[ET+1]."はHP・ST回復!"k=l=1S=2}else{gosub 9k-8?(S[l=1]="を使った",S[0]=IM[k],k=2):k=1;S=UC+1}j=0soft1("")soft2("")}
unlock(1)}soft1("EXIT")soft2("MENU")}#sub6#
「sub6」
func IT(X1,Y1,W1){C()frect(-67,-10,w+2,20*W1)clear(-66,-9,w,18*W1)trgt(M)clear(X1*8+1,Y1*8+M[1][X1][Y1]=1,8,8)trgt(off)origin(w2,h2)}label死C()frect(-66,-72,w,h)col(0xFFFFFF)text("You are deleted",0,-12,1)
text("from this world...",0,0,1)save(0)goto"ー"func R(。){return abs(rand)%。}label 20gc()for(A=!Z=R(8)+1;++A<23;){lock()clear(-66,-72,132,108)if(`&1){for(i=5;i>=0&&0<j=(i*3+9-A)*A
>>1;--i){
col(i*0x321F32)foval(-j,-j,j<<1,j<<1,0,180)col(i*0x220022)farc(-j,-j/2,j<<1,j)}}C()text(E[e?ET:45;],rand%6,rand%6-6,1)col(rand)text("◆",rand%16,rand%16-6,1)if(`&2){col(0xA000)
for(j=(22-A)*A,i=A*2;360>i;i=i+45){farc(cos(i*Z)*j/z=320-sin(i)
>>1,cos(i+j)*j/z
>>1,1000/z,1000/z)}}if(`&4){col(0xFFFF00)for(i=0;i<3;++i){text("★",cos(j=i*120+A*9)/5,sin(j)/10-20,3)}}
if(`&8){col(255<<16)for(i=k=0,l=A*2-44;i<720&&A>i/48;i=i+144){line(k,l,k=sin(i+144)*(j=22-A<<1)/100,l=-cos(i+144)*j/100)}}unlock(1)}}
操作方法とか
ダンジョン
左上に現在地とかが表示される。(14,6)に行くと下へ行くか出るので1か2で選ぶ
上で前進/左右で振り向き/下で後ろ向き/ソフト1で終了/ソフト2でメニュー画面
メニュー
上にあるのがマップ
■…壁/コイン…アイテム/落とし穴…トラップ/点滅…自分
左は上から順に攻撃力・防御力・魔力・魔防力・素早さ・運・ステータス
[ステータスは闇…戦闘中命中が下がる/毒…戦闘中や探索時にHPを削られる/混乱…戦闘で必ず物理攻撃を選択し敵味方構わず攻撃。物理攻撃を受けると治る/沈黙…魔法が使えない]
右は上から
レベル・HP・経験値・階・金・時間・最大HP(次のレベルアップに必要な経験値)。レベルアップすると各ステータスが1UP、最大HPも増える。
上下キーでレベルアップしたときに特に成長させたいステータスを選べる。ソフト1でセーブ、ソフト2でアイテム画面
アイテム
ポーション…HP回復/万能薬…ST回復/破砕グラブ…戦闘中攻撃アップ/鉄壁…戦闘中防御アップ+一回だけ魔法特殊効果を防ぐ/水晶玉…戦闘中魔力+精神アップ/マモノ餌…エンカウント率アップ/透明マント…エンカウント率ダウン、戦闘中なら逃げ出す
見透しの巻物…マップにトラップを表示。戦闘中なら敵のHPとステータスを表示/TNT爆弾…目の前のトラップ・アイテムを粉砕。戦闘中なら敵を一撃/幸せの風…全ステータスを1アップ+HP全回復+ST回復
ソフト1で使用、ソフト2でマップへ戻る
バトル
敵とエンカウントで発動。手前が自分、数値は現HP/最大HP:ステータスと見る。ステータスは異常が出ているステータス数値のor値(闇1毒2混4沈8)敵は5種類それぞれ個性がある
[コマンド]
戦う…物理攻撃/防御…ダメージ1/2、ステータス異常回避、HPちょい回復/魔法…魔力攻撃。うまくいくと特殊効果発動。(紫ドーム→闇/緑玉→毒/キラキラ星→混乱/五傍星→沈黙)/アイテム…アイテムを一つだけ使用
SHOP
10階に一回降りるときに買い物ができます
まあこんなもんです。ほんとはもっといろいろ付ける予定でしたが俺の携帯では限界のようなのでこれで完成
SPALMってなんでもできるね
833 :
138:2006/01/25(水) 21:56:17 ID:X1ruoIw5O
電卓を作っています。ミニ版完成しますた。1の段〜9の段までの九九です。0の段もあります。
【九九ランダム】
A=abs(rand)%9 B=abs(rand)%9 C=A*B
text(A+"×"+B+"="+C,0,12)input()
まあそこそこできるようになってきたな
ランダムではなく、掛けられる数を上下、掛ける数を左右で変えられるように改造してみたら?
835 :
138:2006/01/25(水) 22:22:04 ID:X1ruoIw5O
>834
たとえば
1×1=1
とかの場合左右で
2×2=4
とかにする奴ですか?
今度は○で変わるようにしました。
【九九ランダム】
A=abs(rand)%10 B=abs(rand)%10 C=A*B
label 0
text(A+"×"+B+"="+C,0,12)if input(0)=keyselect then A=abs(rand)%10 B=abs(rand)%10 C=A*B clear(0,0,280,280) endif if input(0)=key0 then end endif
goto 0
ゆういちのソースを発展させてそれなりのゲーム完成したぞ。
今流行の右脳系ゲームだ。
s=20m=s soft1("○")soft2("×")
label 0s=s-1if s<0then goto 3endif a=abs(rand)%10b=abs(rand)%10q=a*b+(rand)%2lock()clear(0,0,240,240)text(a+" x "+b+" = "+q+" ?",10,20)unlock(1)
label 5if input()and keysoft1 then goto 1elseif scan=keysoft2 then goto 2endif goto 5
label 1if q=a*b then p=p+1 text("正解!",40,50)else text("不正解",40,50)endif input()goto 0
label 2if q=a*b then text("不正解",40,50)else p=p+1 text("正解!",40,50)endif input()goto 0
label 3text("正解率 : "+p+" / "+m,10,100)input()
838 :
138:2006/01/25(水) 23:48:21 ID:X1ruoIw5O
俺のヘッポコソースで作れる…だ…
839 :
138:2006/01/26(木) 14:48:55 ID:jjLlTk41O
あれ?うp板に名無しで投稿してるの誰?
840 :
138:2006/01/26(木) 20:28:55 ID:jjLlTk41O
ダイナマイト?を作ってみました。
【ゲーム系?ダイナマイト】
大=20 幅=20
label 0
lock()farc(10,12,大,幅)if 幅>150then clear(0,0,280,280)text("クリアー!",180,100) endif if input(0)=keyselect then 大=大+10幅=幅+10 endif if input(0)=key0 then end endif
unlock(1)
goto 0
841 :
138:2006/01/27(金) 18:11:55 ID:Me6dLRp+O
今までの俺の作品は連打系が多かったけど今回はおし続け系
i=50h=50
label 0
text("人",i,h)if scan=keyright then i=i+7clear(0,0,280,280) endif if scan=keydown then h=h+7clear(0,0,280,280) endif if scan=keyleft then i=i-7clear(0,0,280,280) endif if scan=keyup then h=h-7clear(0,0,280,280) endif if input(0)=key0 then end endif
goto 0
842 :
138:2006/01/27(金) 18:15:05 ID:Me6dLRp+O
【ダイナマイト○おし続け】
大=20 幅=20 label 0 lock()farc(10,12,大,幅)if 幅150then clear(0,0,280,280)text("クリアー!",180,100) endif if scan=keyselect then 大=大+10幅=幅+10 endif if input(0)=key0 then end endif unlock(1)
goto 0
843 :
138:2006/01/28(土) 19:24:18 ID:iGXtzoA6O
返事が無い…ただのしかばねスレのようだ…
844 :
138:2006/01/30(月) 03:12:20 ID:QoL71gpsO
オリジゲーム?ファイルは四つ
「タイトル」
label 0 clear(0,0,280,280)text("喧嘩道場!",50,100)text("key1.スタート",50,120)if scan=key1 then thread("コマンド","スタート")join("スタート") endif goto 0
845 :
138:2006/01/30(月) 03:14:56 ID:QoL71gpsO
「バトル」
clear(0,0,280,280) label 2 text("(`´∀`)",50,50)text("| ○○",60,70)text("| |",70,90)text("(-∀^)",150,50)text("○○ |",140,70)text("| |",130,90)text("keydown.
846 :
138:2006/01/30(月) 03:16:38 ID:QoL71gpsO
「バトル」2ページ目
..攻撃1",0,12)text("keyup...攻撃2",0,24)if scan=keydown then thread("攻撃!","攻撃1")join("攻撃1") endif if scan=keyup then thread("攻撃!","攻撃2")join("攻撃2") endif goto 2
847 :
138:2006/01/30(月) 03:18:25 ID:QoL71gpsO
「攻撃!」
label 1 clear(0,0,280,280)text("(^∀^) つ",60,50)text("|レ|",70,70)text("U U",80,90)text("))゚。゚)",160,50)text("○○|",150,70)text(">>",140,90)if scan=keyselect then thread("コマンド","戻る")join("戻る") endif goto 1
848 :
138:2006/01/30(月) 03:19:23 ID:QoL71gpsO
「攻撃!」
label 3 clear(0,0,280,280)text("(>∀<)",60,50)text("|レ|========",70,70)text("U U",80,90)text("(> <)",150,50)text("→) |",140,70)text(">>",150,90)if scan=keyselect then thread("バトル","バック")join("バック") endif goto 3
849 :
138:2006/01/30(月) 05:01:44 ID:QoL71gpsO
「タイトル」のthread("コマンド","スタート")と「攻撃!」のthread("コマンド","戻る")の"コマンド"は"バトル"に変えて下さい。
迷路自動生成。
作りかけの上、最適化を全く施していないので効率が悪く、非常に遅い。
しかし続きを作るのはもう秋田。誰かヨロシク。
mazeCols = 80;
mazeRows = 60;
waysWidth = 3;
waysHeight = 3;
for(i = 0; i < mazeCols * mazeRows; i++) {
map[i] = 0;
}
map[0] = 1;
drawMaze();
while (input(100) != 65536) {
digMaze();
drawMaze();
}
851 :
続き:2006/01/30(月) 23:05:33 ID:R0le7dUtP
続き。同じソースに続けて。あともうひとつ関数がある。
func digMaze() {
for (i = 0; i < mazeCols * mazeRows; i++) {
if (! map[i] & 1) {
if ((i > mazeCols) && (map[i - mazeCols] & 1) && (rand % 10 < 5)) {
map[i] = map[i] | 5;
}
if ((i % mazeCols) && (map[i - 1] & 1)) {
if (rand % 10 < 5) {
map[i] = map[i] | 3;
}
}
? map[i]++;?
}
}
}
852 :
続き:2006/01/30(月) 23:06:25 ID:R0le7dUtP
ラスト。これらは全部同じファイルであるのが望ましいが、
文字数オーバーの機種は適宜編集して欲しい。
func drawMaze() {
lock();
col(0x000000);
frect(0, 0, waysWidth * mazeCols, waysHeight * mazeRows);
for(i = 0; i < mazeCols * mazeRows; i++) {
col(0xFFFFFF);
if (! (map[i] & 1)) {
frect((i % mazeCols) * waysWidth, (i / mazeCols) * waysHeight, (i % mazeCols + 1) * waysWidth, (i / mazeCols + 1) * waysHeight);
}
if (! (map[i] & 2)) {
line((i % mazeCols) * waysWidth, (i / mazeCols) * waysHeight, (i % mazeCols) * waysWidth, (i / mazeCols + 1) * waysHeight);
}
if (! (map[i] & 4)) {
line((i % mazeCols) * waysWidth, (i / mazeCols) * waysHeight, (i % mazeCols + 1) * waysWidth, (i / mazeCols) * waysHeight);
}
}
unlock(1);
}
>>851の
> ? map[i]++;?
の行は不要だった。削除しておいて。
854 :
138:2006/01/30(月) 23:23:39 ID:QoL71gpsO
856 :
138:2006/01/31(火) 14:45:11 ID:MD2XyVGTO
text(">>"はtext("<<"に直しといて
857 :
850:2006/01/31(火) 18:42:07 ID:Z+WHpgkoP
>>855 無茶苦茶処理が遅いだけ。N901iCでも1分ぐらいはかかる。
で、せっかくだから処理がわかりやすいように改変しただけのバージョンも投下。
mazeCols = 20;
mazeRows = 15;
waysWidth = 10;
waysHeight = 10;
text("決定:終了/他:掘削+更新", 0, mazeRows * waysHeight, 0);
map[0] = 1;
while (input() != 65536) {
digMaze();
}
858 :
850:2006/01/31(火) 18:42:48 ID:Z+WHpgkoP
func digMaze() {
lock();
col(0x000000);
frect(0, 0, waysWidth * mazeCols, waysHeight * mazeRows);
col(0xFFFFFF);
for (i = 0; i < mazeCols * mazeRows; i++) {
if (! map[i] & 1) {
if ((i >= mazeCols) && (map[i - mazeCols] & 1) && (rand % 10 < 4)) {
map[i] = map[i] | 5;
} else {
if ((i % mazeCols) && (map[i - 1] & 1)) {
map[i] = map[i] | 3;
}
}
}
if (! (map[i] & 1)) {
frect((i % mazeCols) * waysWidth, (i / mazeCols) * waysHeight, waysWidth, waysHeight);
}
if (! (map[i] & 2)) {
line((i % mazeCols) * waysWidth, (i / mazeCols) * waysHeight, (i % mazeCols) * waysWidth, (i / mazeCols + 1) * waysHeight);
}
if (! (map[i] & 4)) {
line((i % mazeCols) * waysWidth, (i / mazeCols) * waysHeight, (i % mazeCols + 1) * waysWidth, (i / mazeCols) * waysHeight);
}
if (i % mazeCols == 0) {
unlock(1);
lock();
}
}
unlock(1);
}
859 :
非通知さん@アプリ起動中:2006/01/31(火) 19:52:07 ID:3tSzC9uoO
盛り上がってるとこすまんが誰か、
RGBを16進数に変換してくれるプログラムを作って頂けないだろうか…
わざわざそんなのいらない。16進ぐらい脳内変換
861 :
850:2006/01/31(火) 23:42:13 ID:Z+WHpgkoP
秋田とか言っときながら改良型を投下。(1/3)
label init;
clearvar();
mazeCols = 20; mazeRows = 15;
waysWidth = 10; waysHeight = 10;
text("決定:終了/他:掘削+更新", 0, mazeRows * waysHeight, 0);
map[0] = 1;
lock();
col(0xFFFFFF); frect(0, mazeRows * waysHeight, 240, 12);
col(0x000000); text("Thinking...", 0, mazeRows * waysHeight, 0);
unlock(1);
while (digMaze() && (! input(100))) {}
lock();
col(0xFFFFFF); frect(0, mazeRows * waysHeight, 240, 12);
col(0x000000); text("決定:終了/他:もう一度", 0, mazeRows * waysHeight, 0);
unlock(1);
if (input() != 65536) {
goto "init";
}
862 :
850:2006/01/31(火) 23:42:47 ID:Z+WHpgkoP
(2/3)
func digMaze() {
filled = 0;
lock();
col(0x000000);
frect(0, 0, waysWidth * mazeCols, waysHeight * mazeRows);
col(0xFFFFFF);
for (i = 0; i < mazeCols * mazeRows; i++) {
if (! map[i]) {
if ((rand % 10 < 4) && ((i >= mazeCols) && (map[i - mazeCols] & 1))) {
map[i] = 5;
}
if ((rand % 10 < 4) && ((i % mazeCols) && (map[i - 1] & 1))) {
map[i] = 3;
}
if ((rand % 10 < 4) && ((i + mazeCols < mazeCols * mazeRows) && (map[i + mazeCols] & 1))) {
map[i] = 1;
map[i + mazeCols] = map[i + mazeCols] | 5;
}
if ((rand % 10 < 4) && (((i + 1) % mazeCols) && (map[i + 1] & 1))) {
map[i] = 1;
map[i + 1] = map[i + 1] | 3;
}
} else {
filled++;
}
drawBox();
}
unlock(1);
return(mazeCols * mazeRows - filled);
}
863 :
850:2006/01/31(火) 23:43:42 ID:Z+WHpgkoP
(3/3)
func drawBox() {
drawX = (i % mazeCols) * waysWidth;
drawY = (i / mazeCols) * waysHeight;
if (! (map[i] & 1)) {
frect(drawX, drawY, waysWidth, waysHeight);
}
if (! (map[i] & 2)) {
line(drawX, drawY, drawX, drawY + waysHeight);
}
if (! (map[i] & 4)) {
line(drawX, drawY, drawX + waysWidth, drawY);
}
if (i % mazeCols == 0) {
unlock(1);
lock();
}
}
864 :
850:2006/01/31(火) 23:47:17 ID:Z+WHpgkoP
マップが埋まるまで自動で繰り返し、埋まったら停止。
一回分描画ごとにキー判定。キーバッファに何かあれば終了。
マップが埋まって停止したときに決定キーで終了。それ以外のキーならもう一度ゼロからやり直す。
マップのサイズは、
mazeCols = 迷路の横幅マス数
mazeRows = 迷路の縦幅マス数
waysWidth = 通路+壁の横幅ドット数
waysHeight = 通路+壁の縦幅ドット数
となっている。
例によって最適化はしていない。また、バグが残っているのかたまに部屋ができてしまう。
>>860 お前みたいに頭よくない俺には必要なんだよ
まあ自作したが。
p=8@(v,"A","B","C","D","E","F")soft2("QUIT")
label 0gc()lock()color(d[0],d[1],d[2])frect(0,0,240,270)
for(c=0;c<3;c++){c[c]=d[c]/16if(c[c]>9){c[c]=v[c[c]-10]}e[c]=d[c]%16if(e[c]>9){e[c]=v[e[c]-10]}}
if(d[0]+d[1]+d[2]<380){col(0xFFFFFF)}else{col(0x000000)}text("col(0x".c[0].e[0].c[1].e[1].c[2].e[2].")",0,0,0)
text("color(".d[0].",".d[1].",".d[2].")",0,18,0)text("増減値".p." ([7]↑ / [*]↓)",0,48,0)unlock(1)
866 :
2/2:2006/02/01(水) 00:09:47 ID:65VJvb8eO
if(scan==2&d[0]+p<256){d[0]=d[0]+p}elsif(scan==4&d[1]+p<256){d[1]=d[1]+p}elsif(scan==8&d[2]+p<256){d[2]=d[2]+p}
elsif(scan==16&d[0]-p>0){d[0]=d[0]-p}elsif(scan==32&d[1]-p>0){d[1]=d[1]-p}elsif(scan==64&d[2]-p>0){d[2]=d[2]-p}
elsif(scan==1024&p>0){p--}elsif(scan==128){p++}elsif(scan==262144){end}goto 0
X=24516do{A[I++]=X&15}while(0<X=X
>>4)for(J=I-1;J>=0;--J){text(strat("0123456789ABCDEF",A[J]),60-J*6,0,0)}input()
今の無しね
X=-46521
do{text(strat("0123456789ABCDEF",X&15),60-J++*6,0,0)}while(J<9&&X=X
>>4)input()
869 :
138:2006/02/01(水) 23:44:02 ID:crhBr6R/O
Xを何々で止める方法も分かったしソース貼るかぁ
X=0
label 0
text("人",X,12)if X>=228then X=228 endif if scan=keyright then X=X+12clear(0,0,280,280) endif if input(0)=key0 then end endif
goto 0
138とか名乗っているゆういちのチラシの裏でスレが埋まっている件について
871 :
138:2006/02/03(金) 18:43:15 ID:V2TnUd9zO
柄沢の力は少年マンガに出てきたどの時間操作系の能力より現実的だな。実際はマインドコントロールだけど…。こわい
誤爆った…orz
874 :
138:2006/02/07(火) 00:38:44 ID:SzaulJ5/O
forとかMAP[DATA[i][j]]とかやって遊んでたらこんなんできた…
MAP[0]="□" MAP[1]="■" for i=0 to 10 for j=0 to 10 text(MAP[DATA[i][j]],i*5+30,j*5+30)text(MAP[DATA[i][j]],i*5+31,j*5+31) next next input()
875 :
138:2006/02/11(土) 02:40:21 ID:yD+sJ8qpO
3月1日にはDoCoMoに代える予定です。
心が落ち着くプログラム
soft1("EXIT")origin(width/2,height/2)label 0lock()clear(-width/2,-height/2,width,height)if P=0then H=(H+175)%360onlight()endif
P=sin(H-T)/3T=(360+T+P)%360X=cos(T)*3/5Y=sin(T)*3/5line(X,Y,cos(T-76)*3/20,sin(T-76)*3/20)arc(-15,-15,29,29)line(X,Y,cos(T+76)*3/20,sin(T+76)*3/20)if(scan=131072)then end endif
line(0,0,cos(H),sin(H))unlock(1)goto 0
877 :
138:2006/02/14(火) 13:24:50 ID:Z7cbhgX/O
878 :
138:2006/02/14(火) 18:40:20 ID:Z7cbhgX/O
掛け算機
A=1 B=1 C=A*B
label 0
text(A+" x "+B+" = "+C,0,12)if A>=9then A=9 endif if A<=1then A=1 endif if scan=keyright then A=A+1 C=A*B clear(0,0,280,280) endif if scan=keyleft then A=A-1 C=A*B clear(0,0,280,280) endif if B>=9th
879 :
138 :2006/02/14(火) 18:41:25 ID:Z7cbhgX/O
en B=9 endif if B<=1then B=1 endif if scan=keyup then B=B+1 C=A*B clear(0,0,280,280) endif if scan=keydown then B=B-1 C=A*B clear(0,0,280,280) endif if scan=key0 then end endif
goto 0
880 :
138:2006/02/21(火) 20:24:22 ID:tRmb+MKmO
現在シレン風開発中.タイトルにメニューにダンジョンの画面開発完了.後はアイテムやモンスター,主人公を表示,LvUP,セーブ,町,マップ表示,ATUP,アイテム買い等の処理で完成!ある意味ソースは超長い
881 :
138:2006/02/21(火) 22:46:20 ID:tRmb+MKmO
中間発表.処理を省くために町とセーブ機能を消します後ダンジョンは固定ですんでアイテムの位置や店の位置は変わりませんモンスターは完全にランダム移動ですパコ系は壁をすり抜けるしたまに居なくなりますアイテムの中にはスーファミ版で有った肉とかも有ります
882 :
138:2006/02/22(水) 05:10:43 ID:GUHSUYCGO
中間発表2アイテム買いとATUPの機能は消します後パコ系は携帯版みたいに壁を通らなくしました罠は全て"大""洪"等の文字で表示されますちなみに大は大地雷で洪は大洪水で穴は落とし穴です全て略しています
883 :
138:2006/02/22(水) 07:31:04 ID:GUHSUYCGO
アイテムは10個までしか持てないし整理も出来ない誰かデバッグしたい人居る?後X>=12等とすると■が無い所要するに●
■■■■■
■ ■
■ ●
■■■■■
の所で止まってしまいます…
884 :
138:2006/02/22(水) 08:10:37 ID:GUHSUYCGO
シレン風に引き続きカービィ風にマインスイーパ風マリオ風の3つを新たに製作開始しました
885 :
138:2006/02/22(水) 17:45:55 ID:GUHSUYCGO
完成したら面倒くてもうpしる本当に作ってるか分かって貰えないから
886 :
138:2006/02/23(木) 17:46:42 ID:pxeekZrLO
ダンジョン構造はtext("■■■■"みたいなマップ構造はやめて完全rectにする事にして階段の位置も完全randにした一応モンスターは階ごとに10体でますモンスターは増えません(てか増やし方知らねーし
887 :
138:2006/02/28(火) 19:49:08 ID:08/aD9MGO
ついにiモードに変えました!
おめ。少しずつSPALMも慣れていくといいよ。
889 :
138:2006/02/28(火) 21:04:52 ID:08/aD9MGO
ありがとう!
SPALMは今やってます。馴れるまで時間がかかりますが頑張ります!
890 :
138:2006/03/01(水) 19:30:57 ID:FGVEsdnfO
SPALMやり方が分かんね…だりかおしえてくれぃ…
label 0
@("00000000001000111100010100000000000001001111100111","00000000000111110011000000101100000000111111111111")if(scan==0){end} goto 0
……意味分かんない……
.
.
いろは
あ
895 :
138:2006/03/12(日) 00:06:17 ID:/JMogHz9O
太達風作ってます
label 太
@(A,"ドン","カッ")
goto"太"
&トルネコ風も(トルネコ風はストーリーとか考え中画像は使わない
label ダ
'ダンジョン処理'
goto"ダ"
label 仲
#仲間#
goto"仲"
label ア
#アイテム#
goto"ア"
label 動
#キー#
goto"動"
label 自
#キャラ#
goto"自"
こんな感じ。
プログラムやりたい人いる?
896 :
138:2006/03/12(日) 02:16:14 ID:/JMogHz9O
左を押しても動かない…
Y=0X=0
label ダ
'ダンジョン絵画'
lock()clear(0,0,280,280)text("人",X,Y,0)rect(0,0,144,144) i=input(0) if(i==32768&&Y<132){Y=Y+12}if(i==4096&&Y>0){Y=Y-12}if(i==16384&&X<132){X=X+12}if(scan==8192&&X<0){sleep(150)X=X-12}if(scan==2){end} unlock(1)goto"ダ"
これが問題のソース…
キー┃数┃
0 ┃1 ┃
1 ┃2 ┃
2 ┃4 ┃
3 ┃8 ┃
4 ┃16┃
5 ┃32┃
6 ┃64┃
↓↓↓↓
続く
897 :
138:2006/03/12(日) 02:20:08 ID:/JMogHz9O
7 ┃128 ┃
8 ┃256 ┃
9 ┃512 ┃
* ┃1024┃
# ┃2048┃
上┃4096┃
左┃8192┃
↓↓↓↓↓
続く
898 :
138:2006/03/12(日) 02:24:20 ID:/JMogHz9O
右 ┃16384 ┃
下 ┃32768 ┃
センター ┃65536 ┃
左ソフト┃131072┃
右ソフト┃262144┃
━━-┻-━━-┛
つけ忘れ↑
138は市ね
パクリ厨138は塵
138消えろ
138はネ申!!!!
僕は尊敬してますよ!!!!
138は塵
904 :
138:2006/03/13(月) 15:31:27 ID:B2H6FMVpO
ID:r8TuLtsJO必死だな
138は塵
907 :
138:2006/03/15(水) 00:20:38 ID:kSOF2mXzO
HP[0]=10000 HP[1]=10000
'HP表示
text("HP:".HP[0]." HP:".HP[1],0,0,0)input()
未完成ロボアクション
908 :
138:2006/03/15(水) 00:39:11 ID:kSOF2mXzO
909 :
非通知さん@アプリ起動中:2006/03/15(水) 20:24:02 ID:wi6AZD37O
そろそろ新機能が欲しい
画像を登録して背景にしたり
32x32くらいの画像をもっと簡単に取り入れられたり
通信でソースやりとりできたり(これが一番重要)…
誰か神が改変してくれないものか…どうかお願いします
910 :
138:2006/03/16(木) 05:54:12 ID:dgj7WOE9O
俺まだSPALMの初心者だからこんなのしか出来ない…
HP=15
label 0
lock()clear(0,0,240,240)text("HP:".HP,0,0,0)if(scan==4){HP=HP+1}if(scan==1){end}
unlock(1)
goto 0
SPALMならではの機能で、Javaに近い言語を使えるんだなこれが
HP=HP+1
↓
HP++
HP--なら1ずつ減らせる
どちらにしろ、1ずつしか計算できんが…
あと、ビットシフトってのがあって…HP200だとすると
HP=HP
>>1 こうするとHPは半分になる。
HP=HP<<1
こちらは2倍になるはず。
>>1なら半分(<<1なら2倍)
>>2なら1/4(<<1なら4倍)
>>3なら1/8(<<1なら8倍)…って感じの計算しか出来んが…
912 :
138:2006/03/19(日) 03:17:53 ID:0Ul9a4m+O
@変数でかなり使いやすい…俺も初心者だけど他の初心者用〜↓
@(A,"勝ち","負け","そこには置けない","負けてください","勝ってください") B=abs(rand)%5 C=abs(rand)%5 text(A[B]." ".A[C],0,0,0)input()
このスレも終わりかな…
楽しかった日々よ…永遠に。
スロットのゲームを携帯BASICで造ろうとしているんですが
子役やボーナス絵柄はケータイの絵文字を使って表現しようと思ってるんですけど
リールの回転をどうやれば表現できるかがわかりません
ここにいるプログラミング名人の方々の力を貸して貰えませんか?
簡単すぎて屁こいちまったじゃねぇか
@(A,"☆","♪","7","BAR","*")
label 0lock()clear(0,0,60,40)for(i=0,k=k+2;i<3;++i){clip(i*20,0,20,40)rect(i*20,0,19,39)for(j=0;j<3;++j){text(A[(i+j+5-k/18)%5],i*20+10,j*18+k%18-15,1)}}clip(0,0,60,40)if(input(0)){end}unlock(1)goto 0
人間の目はテキトーなので、それっぽく見せてやればそれっぽく見える。
つまり、正位置、1/3ずらし、2/3ずらし、の3シーンぶん表示を用意して、
ものっそい勢いで描き換えてやればおk。
あれ……俺、自演に釣られたのか……?_no
SPALM用だが改良版。ドラムを止められるようになった
得点は手前で計算しろ
origin(width/2-30,height/2-20)@(A,"☆","♪","7","BAR","*")soft1("EXIT")soft2("NEXT")L=3label 0lock()clear(0,0,60,40)for(i=0;i<3;++i){clip(i*20,0,20,40)rect(i*20,0,19,39)for(j=0,i>=L&&k[i]=k[i]+20;j<3;++j){
text(A[(i+j+5-k[i]/18%5)%5],i*20+10,j*18+k[i]%18-18,1)}}clip(0,0,60,40)if(1<<17&P=input(0)){end}elsif(P&8<<13&&L<3){k[L]=k[L]-k[L++]%18+14}elsif(P&1<<18&&L>2){for(L=i=0;i<3;k[i++]=abs(rand)%90){}}unlock(1)goto 0
919 :
非通知さん@アプリ起動中:2006/03/28(火) 11:27:42 ID:FKihfTyP0
また質問なんだけど、例えば旧MAP[5][5]に"M"をいれたいときはどうかけばよいの?
なんだユウイチか…
921 :
非通知さん@アプリ起動中:2006/03/28(火) 11:44:08 ID:FKihfTyP0
substr(MAP[5],5,1)="M"
922 :
914:2006/03/28(火) 15:55:01 ID:zwsGqo5vO
>>915-918 ありがとうございます!
>>915と
>>918はBASICのプログラムじゃないっぽいですが
BASICに置き換えて自力で考えてみます
わからなくなった時はまたここへ質問しに来ていいですか?
923 :
138:2006/03/28(火) 17:53:17 ID:x2HNJo7OO
924 :
138:2006/03/29(水) 17:19:23 ID:gsDXT0pTO
最近俺はiBASICをダウソした。iBASIC意味分からん…iBASICのスレ(前スレ)を見たけど分かんねぇ…
携帯BASICでスロットゲームを造ろうとしていた者です。
絵文字を使うつもりでしたがやっぱり画像を造ってそれを使うことにしました。
>>916の方の言っていた事を頭に置いて造ってみて第1リールだけ
何とか回転しているように見えるようには出来たのですが…
一周を回る速度が約3秒弱、と遅すぎて困っます。
これって処理速度とかいうものが関係しているのですか?
僕の造ったプログラムに問題があると思うのですけど
というよりも実はプログラムの事についての知識が全くないんです。
すみません。どなたか、ヒント下さい m(._.)m
そんなの機種やプログラムによって違うからエスパーでも無けりゃわからん
一応三つのリールまでできたんですけど…
a="7" b="〓" c="☆" d="♪" e="$" f="◎"
k=0 j=1 l=2 s=1 m=0 n=1 o=2 p=1 q=0 r=1 t=2 u=1
r[0]=b r[1]=a r[2]=e r[3]=c r[4]=f r[5]=d
c[0]=b c[1]=d c[2]=a c[3]=e c[4]=c c[5]=f
z[0]=d z[1]=e z[2]=a z[3]=f z[4]=b z[5]=c
origin(100,89)
label A
clear(0,0,width,height)
i=input(0)
text(r[k],0,33)text(r[j],0,22)text(r[l],0,11)
k=k+s j=j+s l=l+s
text(c[m],13,33)text(c[n],13,22)text(c[o],13,11)
m=m+p n=n+p o=o+p
text(z[q],26,33)text(z[r],26,22)text(z[t],26,11)
q=q+u r=r+u t=t+u
if k=6 then k=0 elseif j=6 then j=0 elseif l=6 then l=0 endif
if m=6 then m=0 elseif n=6 then n=0 elseif o=6 then o=0 endif
if q=6 then q=0 elseif r=6 then r=0 elseif t=6 then t=0 endif
if i=keysoft2 then exit elsef i=key4 then s=0 elseif
i=key2 then s=1 p=1 u=1 elseif i=key5 then p=0 elseif
i=key6 then u=0 endif
goto"A"
↑これをもっとスムーズに回るようにしたいんですが
どうしたらいいんでしょうか?
クズに等しいプログラムを貼ってしまってすみません
本当ならもっと短いプログラムでできる事なんだろうナ
まあ作り方は人によるから正しく動作している以上そのプログラムにはとやかく言わんが、
高速にする手っとり早い方法はlabel Aの後にlock()、goto"A"の前にunlock(1)を入れればVやezなら速くなると思うよ
929 :
138:2006/03/32(土) 02:42:48 ID:PxczX2PbO
>>138 まずcのURLで貼るな。
それからオマエはそこへは行くな。
わかったな?
931 :
非通知さん@アプリ起動中:2006/04/20(木) 18:28:23 ID:5LlD8eF0O
画像の描写する点を上じゃなくて下にすることってできませんか?
描写点から上に向かって画像を表示させたいんです
携帯BASICマスターの方、教えて下さい
携Bなら画像の高さ取得してY座標から引けばいい
SPALMならアンカーで一発だよ
933 :
非通知さん@アプリ起動中:2006/04/22(土) 21:27:36 ID:vOwpsbHiO
すみません
もう一つ聞きたいんですが
画像の一番上の部分と一番下の部分をつなげることってできますか?
2回描画すればいいんじゃね?
埋め
936 :
非通知さん@アプリ起動中:2006/05/06(土) 21:48:11 ID:qWH89RmdO
高さ420で幅40の画像を三つ作ろうとしたら容量の限界なのか
三つ目の画像の途中で文字が打てなくなりました
これはどうすることもできないんですよね?
Vにも携帯BASIC出たんです・・・統合してもらってもいいですかね?
938 :
非通知さん@アプリ起動中:2006/06/08(木) 22:31:36 ID:dVoORbODO
機能追加がないとなぁ
対応機種増えてもな…
threadとかね
でも俺はそれよりも高速化して欲しいな
保守
941 :
非通知さん@アプリ起動中:2006/07/12(水) 00:42:30 ID:vq7a0AwgO
N88-BASICとMSX-BASICで育った俺には
イマイチこの文法に馴染めないなぁ
あ、単に俺がオサーンになっただけか('A`)
出来ることならpc用のデバッガが欲しい…
943 :
非通知さん@アプリ起動中:2006/07/24(月) 17:15:02 ID:mn706vwBO
ひさびさに投下
二つの円が衝突したときの跳ね返りをシミュレート
r=4+R=36A=-B=1W=44H=70VX=6VY=8X=rand%W Y=rand%H origin(66,72)label 0lock()if(scan){end}clear(-66,-72,132,144)abs(51-W)>14&&A=-A;abs(54-H)>17&&B=-B;rect(-W=W+A,-H=H+B,W+W-1,H+H-1)
(X=X+VX,Y=Y+VY,X*X+Y*Y<r*r)&&(X=cos(T=atan(X,Y))*r/100,Y=sin(T)*r/100,V=VX,abs(cos(T))>70?(VX=(V*Y-VY*X)*Y*2/(r*r)-V,VY=Y*(VX-V)/X+VY):(VY=((V=VY)*X-VX*Y)*X*2/(r*r)-V,VX=X*(VY-V)/Y+VX););
if(abs(X)>W-4){X=X<0?4-W:W-4;VX=X<0?-A-VX:A-VX;}if(H-4<abs(Y)){Y=Y<0?4-H:H-4;VY=Y<0?-B-VY:B-VY;}arc(-R,-R,R+R-1,R+R-1)arc(X-4,Y-4,7,7)text(VX*VX+VY*VY."ppf",0,-6,1)unlock(1)goto 0
func atan(x,y){if(x){for(t=abs(100*y/x),i=-1;t>tan(i=i+10);){}for(;t<tan(i);--i){}(y<0^x<0&&i=-i,x<0&&i=180+i)}else{i=y<0?270:90;}return i}
944 :
非通知さん@アプリ起動中:2006/07/27(木) 21:50:45 ID:kqmDJOPcO
解説ページある?
945 :
非通知さん@アプリ起動中:2006/07/30(日) 18:40:30 ID:YbTdDQ9hO
なんのことやら('A`)
見ての通りだよ
見ての通りの糞スレ出巣
948 :
非通知さん@アプリ起動中:2006/08/07(月) 03:48:16 ID:BudVqoJ6O
949 :
非通知さん@アプリ起動中:2006/08/10(木) 06:51:28 ID:x2vFv9PMO
おすすめある?
951 :
非通知さん@アプリ起動中:2006/08/11(金) 08:11:08 ID:SNdVCPASO
アプリ
く
そ
954 :
非通知さん@アプリ起動中:2006/08/23(水) 10:10:14 ID:aKbZYVxHO
ス
955 :
非通知さん@アプリ起動中:2006/08/23(水) 10:11:01 ID:aKbZYVxHO
レ
956なら神がFLASHに移植
く
958 :
非通知さん@アプリ起動中:2006/08/24(木) 21:40:57 ID:I0M8fNPwO
そ
ス
960 :
非通知さん@アプリ起動中:2006/08/25(金) 13:59:25 ID:b9rct5qk0
動かない…orz
く
そ
す
れ
く
そ
967 :
非通知さん@アプリ起動中:2006/08/31(木) 17:56:43 ID:WX1FFLGeO
み
そ
969 :
非通知さん@アプリ起動中:2006/09/01(金) 00:43:19 ID:D9Oo7gHlO
テクニック!!
く
971 :
非通知さん@アプリ起動中:2006/09/02(土) 18:44:16 ID:hRFr7vJk0
く
そ
974 :
非通知さん@アプリ起動中:2006/09/05(火) 19:11:21 ID:wOvehMf4O
み
く
ろ
く