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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0214
HSPの変数の使い方4解決


リンク

2010/2/14(Sun) 21:09:34|NO.30609

はじめまして、HSPを始めて2週間ぐらいになります。
今は作ったゲームで省略できる部分の命令は省略したりしています。


初歩的な質問になってしまうと思いますが

screen 0,640,480

上のように書くのが普通だと思いましたが

x=640 : y=480
screen 0,x,y


とあるサンプルを見たら上のような書き方をしている人もいました。
ソースの全体を見ましたが最初のscreen以外では使用していませんでした。
今までは全体を見て一回しか使わない数値などは変数にしていませんでした。
今までは上の方法を使ってきましたが下の方法を使った方が処理が早くなったりするのでしょうか?、それとも特に変わりなしでしょうか?。



この記事に返信する


tsuka

リンク

2010/2/14(Sun) 22:09:49|NO.30612

いわゆる定数ってやつですね。

例えば、後々ウィンドウサイズを変えたい場合が出てきたとします。
しかし、スクリプトはこんな感じになっています

screen 0, 640, 480 boxf 0, 0, 640, 480 color 255, 255, 255 repeat 640 * 480 await 1 pset cnt, cnt \640 loop
もし、ウィンドウサイズを300, 200に変えたいと思ったら、640と480のところすべてを書き換えなきゃいけないですよね。
しかし、もし、

x = 640 :y = 480 screen 0, x, y boxf 0, 0, x, y color 255, 255, 255 repeat x * y await 1 pset cnt, cnt \ x loop
こうなっていたらどうでしょう。始めの一行を書き換えるだけですみますね?
さらに、その数字が何を表しているのか、というのもわかりやすくなります。
(いきなり640ってあっても何の数字だかわかりませんよね。xとあれば「あぁ横のサイズだな」ってわかります。多分。)

HSPには定数を定義する#constがありますので、普段はそっちを使うと思います。
また、ウィンドウサイズの場合はginfo_winx, ginfo_winyで表すことができますので、そっちを使いますね。

ginfo_winx, ginfo_winyを使った場合

screen 0, 640, 480 boxf 0, 0, ginfo_winx, ginfo_winy color 255, 255, 255 repeat ginfo_winx * ginfo_winy await 1 pset cnt, cnt \ ginfo_winx loop



KA

リンク

2010/2/14(Sun) 22:15:53|NO.30614

>>今までは上の方法を使ってきましたが下の方法を使った方が処理が早くなったりするので
>>しょうか?、それとも特に変わりなしでしょうか?。

結論からすると変数に置き換える分、時間もメモリも消費します。
でも今回の質問の様に、一回しか使わないのであれば、時間的には変わりません。

わざわざ置き換えているのは、それを書いた人の”書き方”でしょう。
スクリプトを使いまわす場合を考慮して、わざと置き換える場合もあります。

これから色々スクリプトを書いていくうちに、”だからああしていたのか”と思い出す事が
有るでしょう。



リンク

2010/2/14(Sun) 22:44:43|NO.30616

tsukaさん、KAさん、回答ありがとうございます。
文面を読ませて頂き良く理解できました。



u

リンク

2010/2/16(Tue) 03:08:51|NO.30645

定数は定数用の#define,#const命令を使った方がいいですね。
これらはコンパイル時点で置き換えられるようなので、KAさんのいうようなメモリ等のデメリットがありません。

#const x 640
#const y 480
screen 0,x,y



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