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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0803
comet乱数の発生された後6解決


comet

リンク

2009/8/3(Mon) 20:39:59|NO.26707

まずこの質問を見てくださりありがとうございます。

HSPで現在、上から何個も文字が落ちてくるというものを作っているのですが
文字が落ちてくる場所を色々と変えたく
乱数を発生されたのですが、下のようなスクリプトだと
上から落ちてくるのに右へずれながら落ちてきます。
私が作りたいのは一番上で一度、位置が決ったらずっとその位置から
動かないく次の文字も先ほどとは違う位置から落としたいのですが、
どうすればよろしいでしょうか?よろしくお願いします。


screen 0,600,600 repeat redraw 2 y = y+1 color 255,255,255 boxf color randomize x = rnd(600) pos x,y mes "あ" wait 1 redraw 1 loop



この記事に返信する


足利超神

リンク

2009/8/3(Mon) 21:00:05|NO.26709


screen 0,600,600 repeat redraw y++ color 255,255,255 //boxf color //randomize x = rnd(600) pos x,y mes "あ" wait 1 redraw 1 loop
意味が良く分からないんですが・・・
こういうことでしょうか?



KA

リンク

2009/8/3(Mon) 21:04:48|NO.26710

何が悪いのか、少しは考えて下さい。
縦横が違っているのなら、どうすればよいのか分かると思いますが???

ヒント「座標を理解して下さい。」

質問の内容も、微妙に変ですが。



y3

リンク

2009/8/3(Mon) 21:15:44|NO.26712

基本的な考えは、ループの前に文字のX座標を最初に確定して
y座標だけをループで増加させていくという流れになります。
あとrandomizeは「乱数の初期化」なので最初の「1回」だけで十分です。
右から左に流れるのはrandomizeの連打のせいだと思われます。
(repeatの前にrandomizeを移動するだけで動きが変わりますよ)

同時に数文字を落下させたい時は、とりあえず落下する文字数を決めてから、
その数だけの配列変数Xを用意する必要があります。

例 10文字の場合
dim x,10
repeat 10
x(cnt) = rnd(600)
loop

とりあえずこんなのを書いてみました。

(pre)
screen 0,600,600
dim x,10
randomize

*main
repeat 10
x(cnt) = rnd(40) * 15
loop
y = 0
*rakka_loop
redraw 2
color 255,255,255
boxf
color
repeat 10
pos x(cnt),y
mes "あ"
loop
wait 1
redraw 1
y = y +10
if y < 600 : goto *rakka_loop

goto *main
(/pre)

効果がすぐに分かるためにyの速度を上げてあります。
ちなみに rnd(40)*15としているのは、ただ単に文字のバラつきが良いからです。



y3

リンク

2009/8/3(Mon) 21:18:15|NO.26713

ごめんなさい。タグを間違えました(汗
スクリプト前後の(pre)(/pre)は無視してください。


・・・・・・・・orz



comet

リンク

2009/8/3(Mon) 21:20:51|NO.26714

>>y3
y3さんありがとうございます。解決しました。

他の方々もわかりづらい説明なのに色々と
ありがとうございました。



y3

リンク

2009/8/3(Mon) 21:49:24|NO.26716

>cometさん

いえいえ。タグを忘れたため見づらいスクリプトですみません。^^;
cometさんのプログラム経験は存じませんが、もし、始めたてなら、
最初は誰しもこんなものです。
私も20年前の小学校時代に初めてプログラムをした時はもっとひどかったです。
「変数」すら理解できませんでした。
当時はインターネットも無く、関連書籍も少なかったので、
(サンプルコード付き説明書はありました)
試行錯誤して、とにかく考えてやってみる事のみでした。

コンピュータというのは、本当は単純なことしか理解できません。
どんなコンピュータでもプログラムは単純なことに分解して、それを組み立てる事です。

要は最初はシンプルに考えて、実行速度や効率は無視して、
単純で愚直でいいから、その理屈通りに動くかどうかを確立することです。
高速化・最適化はそれからの話であります。
とにかく、これからもがんばってください!

とは言うものの、私も今でも今回と似たようなミスをしてますけどね(汗



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