HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0520
7909ppr (投稿者削除)11解決


7909ppr

リンク

2012/5/20(Sun) 21:09:48|NO.46773

この記事は投稿者により削除されました。
2012/5/27(Sun) 09:12:33



この記事に返信する


晩御飯

リンク

2012/5/20(Sun) 21:19:14|NO.46774

コメントアウトしてあるけど20次元配列は初めて見るんだぜ
kyaraはまだいいとしてccvvxとかccvvyは解読できないからやめてほしいんだぜ
preでくくってほしいんだぜ
どううまくいかないのか書かないとこのコードはスパムよりも意味を持たないんだぜ



cats

リンク

2012/5/20(Sun) 21:34:13|NO.46775

所々全く同じプログラムがあるのでラベルに分けてgosubで飛ばしましょう。
(例)

mes "A" mes "B" mes "A" mes "C" mes "B" mes "C"


gosub *A gosub *B gosub *A gosub *C gosub *B gosub *C stop *A mes "A" return *B mes "B" return *C mes "C" return
このプログラムの場合これするだけでだいぶ短くなるはず。



check

リンク

2012/5/20(Sun) 22:36:46|NO.46778

コード丸投げは禁止って掲示板の規約に入れておくべきだと思うのだが、そうは思わないか?
他人の書いたコメントもないに等しいプログラムなんて暗号に等しいんだ。
質問内容も、まるで英語を日本語に機械翻訳したような日本語だが、
コードを短くしたいのなら、サブルーチン(cats氏のレスのgosub)やモジュール機能などを覚えるべき。



ミント

リンク

2012/5/20(Sun) 23:14:31|NO.46779

まずは「「pre」」でソースをくくると見やすくなります!


なるべくコメントを入れるようにしたほうがいいです。
自分でもわからなくなるはずなのでコメントないと厳しいはずです。
変数の役割をコメントに書くと読みやすくなります。

後、最初に何をやっているプログラムの説明ないと誰も実行しなくなるよ・・・
そしてソースが長いので小さくしましょう。
短縮する方法はいくらでもありますが自分にあったものを見つけないとね。

ソースを部分的に見ると小さくできるかもです。
例えば「迷路の作成」の部分だったり、それぞれ役割ごとに小さくすれば全体的に小さくできるかと思います。
@はcatsさんがいっているとおり「gosub」で管理したほうがいいです。

っとまぁ、私は基本的なことしか言えなかったり(´・ω・`)


>>コード丸投げは禁止って掲示板の規約に入れておくべきだと思うのだが、そうは思わないか?
「禁止、制限」は簡単に入れられるものじゃないですね。たとえ頻繁にあっても。
たとえ禁止になっても、やぶってくる人は出てきます(現実の法律だってそう)

まぁ、それでも最低限なことはやってほしい気持ちはわかります。



ヂオン

リンク

2012/5/21(Mon) 02:10:26|NO.46783

>>疑問は、複数のキャラの表示法です。どうしたら短いコードで表示できるか教えて下さい。

配列変数と繰り返しを使用するのが一般的です。

同じ処理を複数回使用する場合には、サブルーチン、または
ユーザー定義命令を使用します。

サブルーチンに関しては cats さんの 回答、もしくは gosub 命令の ヘルプのページに
山ほどサンプルが有ったりします。

ユーザー定義命令に関してはスクリプトの
#deffunc draw var x_ , var y_
の部分で定義しています。

普通は
#module
#deffunc draw var x_ , var y_
return
#global

の様に使いますが、#module #global に挟まなくとも 引数を持つラベルの様に使用することも出来るみたいです。


#const emtotal 500 #const cipsize 10 #const CSM1 cipsize-1 #const wndx 320 #const wndy 320 #const areax wndx-cipsize #const areay wndx-cipsize #define ctype GET rnd(3)-1 // -1 から 1 の間の値をランダムに取得 #enum WID_MAIN = 0 screen WID_MAIN , wndx,wndy dim emx , emtotal // Position dim emy , emtotal dim emsx , emtotal // 移動方向とスピードを兼ねる dim emsy , emtotal dim emc , emtotal // 色 // 敵を作成 repeat emtotal emx.cnt = rnd(areax) emy.cnt = rnd(areay) emc.cnt = rnd(190) emsx.cnt = GET() emsy.cnt = GET() loop // メインルーチン *@ redraw 0 stick key,0b1111 color:boxf // NPC描画 repeat emtotal dup x,emx.cnt dup y,emy.cnt dup sx,emsx.cnt dup sy,emsy.cnt if(rnd(100)==0){ // 一定 の 確率で向きを変更 sx=GET() sy=GET() } // 位置加算 x+=sx y+=sy // 画面端折り返し if((x>=areax) or (x<=0)):sx=-sx if((y>=areay) or (y<=0)):sy=-sy // 描画 hsvcolor emc.cnt,255,120 draw x,y loop // PC描画 if(key&0b0001):cx-- if(key&0b0010):cy-- if(key&0b0100):cx++ if(key&0b1000):cy++ hsvcolor i,120,255:i+=5 draw cx,cy redraw await 30 goto*@b // ポジションを有効範囲に丸めて描画 #deffunc draw var x_ , var y_ x_=limit(x_,0,areax) y_=limit(y_,0,areay) boxf x_,y_,x_+CSM1,y_+CSM1 return



7909ppr

リンク

2012/5/21(Mon) 20:57:42|NO.46791

なかなかコードの理解できません。
もう少し、学習してみます。
ありがとうございました!



pen

リンク

2012/5/26(Sat) 01:17:04|NO.46857

>このコードを改造し、できるだけ短くコードを打ち、複数の敵キャラを表示させたいのですが、
>どうもうまくいきません・・・

とか言って、この掲示板で危ないソースコピペしておいたら
どっかのバカが質問に答えようと得意になって実行しそうだなww

コード丸投げする小学生をほったらかしにしとくと、それを利用して
↑みたいな事態が起きないともかぎらんぞ

check氏の言うとおり「コード丸投げは禁止って掲示板の規約に入れておく」
くらいの処置は出来るんじゃないか? 管理人さん?



check

リンク

2012/5/26(Sat) 01:31:38|NO.46858

俺は最初のレスでは7909ptr氏に向けて皮肉交じりに言ったんだつもりなんだが、
もともと掲示板の規約には
>11. 不要部分の多い長いスクリプトの投稿はご遠慮ください。
と書いてあるんで、不要部分をどう捉えるかは人それぞれだが、一応は禁止されている。

だが、pen氏のいっているような事態が起こらないとも限らないな。
というか、過去にジョークプログラムが危険性を示さずに投稿されたこともある。

掲示板の規約を少し書き換えたほうがいいような気もするが、
そういう輩はおそらく規約なんて読まずに投稿しているんだろうなぁ。
投稿時に規約の文を表示させてそれに同意させてから投稿、
なんて形式にしてもいいかもしれない。



七誌

リンク

2012/5/26(Sat) 18:02:53|NO.46870

規約がどうのと言われるわりにはかなり最初の方に書かれている規約すら
読んでないような輩も多いようだし無意味だと思うよ。



y.ack

リンク

2012/5/27(Sun) 08:02:59|NO.46881

これはいわゆるコードリーディングであり
投稿者のスキルアップが期待できるのではないでしょうか
僕みたいに興味がない人はスルーすればいいさ



7909ppr

リンク

2012/5/27(Sun) 09:17:33|NO.46882

すみませんが、このログは閉鎖したしました。
けっこうまえに書いたログのはずですがw



ONION software Copyright 1997-2023(c) All rights reserved.