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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0416
ブラッド「rnd」のエラー13解決


ブラッド

リンク

2007/4/16(Mon) 22:51:34|NO.7523

初めまして。一昨日からHSPを使わせてもらってるブラッドです。
っというか一昨日初めてプログラミングにチャレンジしました。
質問なんですが、夜空や同じ画像がたくさん降らせるために使う「rnd」を使うと、
「代入できない変数名を指定しています。」というエラーメッセージが出てしまいます。
何でだかわかる人は教えてください。



この記事に返信する


水野

リンク

2007/4/16(Mon) 23:27:05|NO.7527

まず、どのように打ったのか教えてもらわないと・・・

とりあえず、予想されるミス

x=rnd(64)
を、

rnd(64)=x
と書いている。
もしくは、
HSP2.xとの混同で、

rnd x,64
と書いている。
などが予測されます。
まさか、プログラミングガイド(hsp30付属)
を読まずに使ったのではないでしょうね?



水野

リンク

2007/4/16(Mon) 23:32:30|NO.7528

追伸、
rndで発生させた乱数を予約キーワードと同じ名前の
変数に保管したのども考えられる。(statなど)



ブラッド

リンク

2007/4/17(Tue) 00:03:04|NO.7530

お返事ありがとうございます。
プログラミングガイドは読んでないですけど、HSPTVの入門書は読ましてもらいました。
僕が打ったのは、

CLS 4
WIDTH 600,400,100,50
RANDOMIZE

REPEAT 1000
RND X,600 : RND Y,400
RND R,7 : RR=(R+1)*32-1
RND G,7 : GG=(G+1)*32-1
RND B,7 : BB=(B+1)*32-1
COLOR RR,GG,BB
PSET X,Y
LOOP

STOP
 です。
原因わかりますでしょうか?
お返事お願いします。



りさ

リンク

2007/4/17(Tue) 00:24:02|NO.7532

こんにちわ、りさです。

まずは、
http://hsp.tv/play/pforum.php?mode=about
ここを読んでから投稿してください。

本題ですが、水野さんが仰っておられるように、

RND X,600
この記述は、以前のバージョンで使われていた『命令形式』です。

HSP3からは、rndは『関数形式』として提供されているので、

X=RND(600)
のように記述しなければなりません。

これと同じようなことが、
HSPに付属しているヘルプに記載されているので、そちらも読んでみてください。



GENKI

リンク

2007/4/17(Tue) 00:26:26|NO.7533

 カーソルをRNDのところに移動して、キーボードのF1キーを押してください。
ヘルプブラウザが起動してrnd関数の説明を見ることができます。
あとは、上にある水野さんのレスで解決できるはずです。3つ目のヤツですね。

 ちなみに提示されたスクリプトですが、HSP2.61では正常に動作します。
多分参考にした資料がHSP2用のものだったのではないでしょうか。
HSP3ではHSP2で使用していた一部の命令は記述方法が変わっています。ヘルプで確認してから使うようにしてください。


それと話は変わりますが、

> 3.スクリプトは小文字の<pre>〜</pre>で囲んでください。

スクリプトを貼り付けるときは、投稿欄の注意書き↑にあることをやるとスクリプトが見やすくなりますよ。



ハテナ

リンク

2007/4/17(Tue) 00:34:06|NO.7534

HSP3 からいくつかの命令が関数になった事で起こるよくある間違いです。
たとえば HSP2 では、

rnd x,10
だった命令が HSP3 では、

x=rnd(10)
という書き方をする関数に変わりました。

質問前に過去ログを見ておくと、質問するより早く
答えが分かる事もあるのでお勧めです。



ハテナ

リンク

2007/4/17(Tue) 00:36:31|NO.7535

かさなった・・・。みんなタイピング早いなあ。



Irisawa

リンク

2007/4/17(Tue) 00:47:00|NO.7539

関数を命令として記述した場合のエラーメッセージは分かりにくいという声が多く、現在の
HSP 3.1 beta8では既により分かりやすい文章に修正されています。
まあ、逆に長い文章になっていてちょっと見苦しかったりしますが。

なお、HSPは構文の大文字小文字の区別をしないためどちらでも構わない(ごちゃ混ぜも可)
ですが、予約語や変数などのキーワードは基本的に小文字で統一した方がいいでしょう。
逆に定数は大文字で書いた方が区別しやすいです。
その他、定義命令/関数などはキャメルケースにしたりなどある程度ルール付けしておいた
方がやはり確実にいいです。



GENKI

リンク

2007/4/17(Tue) 00:59:41|NO.7541

ものの見事に同じ解凍ですね。w
それだけrnd関数はよくある質問ということでしょうか。

> かさなった・・・。みんなタイピング早いなあ。

大丈夫最後の2行はかぶってない。



Irisawa

リンク

2007/4/17(Tue) 02:02:52|NO.7543

rndとint/str関数の質問は本当に多いですね。
未だにHSP2の書式で説明している講座サイトなどは多いですし、注意事項をちゃんと
見ないでそのままコピペして「動作しない」って云っている人は...。

rndは互換マクロを使用すれば2.xx系互換の書式で記述できますが(今度はモジュール空間を
つけないと関数形式で記述できなくなってしまいますが)、intとstrは#deffunc系の
プリプロセッサの型名としても使用されるので置き換えることができないんですよね。
peek系関数は使用する人が少ないのかあまり質問ないですね。



ブラッド

リンク

2007/4/17(Tue) 08:00:32|NO.7545

いろいろな回答ありがとうございます。
たぶんHSP2のほうのやり方を見て、やっていたのかもしれません。
今から、HSP3の方でためしてみます。



f

リンク

2007/7/7(Sat) 02:39:03|NO.9375

age



n

リンク

2007/7/11(Wed) 15:04:36|NO.9431

解決してるようだからカキコ



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