1 :
デフォルトの名無しさん :
2007/10/16(火) 19:37:21
2 :
デフォルトの名無しさん :2007/10/16(火) 19:41:20
じゃ、自己解決ゥ!
3 :
デフォルトの名無しさん :2007/10/16(火) 19:55:47
4 :
デフォルトの名無しさん :2007/10/16(火) 23:46:26
クソスレタテンナ...
5 :
デフォルトの名無しさん :2007/10/16(火) 23:56:30
クソスレで、自己解決ゥ!
6 :
デフォルトの名無しさん :2007/10/17(水) 07:43:07
基地外でもスレ建てれんだなぁ ↓ はいどうぞ
HSPってインタプリタだけど コンパイラも作ればいいのに
8 :
デフォルトの名無しさん :2007/10/17(水) 19:16:42
逆コンパイラならあった気がする
10 :
デフォルトの名無しさん :2007/10/17(水) 21:05:05
誰だよw ニコニコにHSPネタ上げてる奴w
>>10 おぉ 以外にいいアイデアかもな
一曲終わるまで・・と 音声認識でソース書くやつは、うける
12 :
デフォルトの名無しさん :2007/10/18(木) 00:31:14
×以外に ○意外に
HSPってRADないのか?
プラグインは豊富なのにRADツールが未だに無いってのもなー
16 :
デフォルトの名無しさん :2007/10/18(木) 01:39:26
オマエガナ
18 :
デフォルトの名無しさん :2007/10/18(木) 19:55:58
ペヤング、値上げだってさ 最近食ってないな〜 俺様はジャムぱんと一緒食べるのが定番だったな
19 :
デフォルトの名無しさん :2007/10/18(木) 23:13:24
がーーん! ショック! ペヤング!
HSPでwin32apiをふんだんに使ったアプリとかあんの?
win32apiをふんだんに? 何を求めているか知らないが、抽象的すぎ とりあえずあるといっておくか
22 :
デフォルトの名無しさん :2007/10/19(金) 04:46:35
じゃ、自己解決ゥ!
HSPでapiなんか使っても遅いから実用的じゃないよ
HSP舐めんな
HSPでウィンドウ作ってそのウィンドウの位置を変更する場合、 ウィンドウ作ってから変更するの? 糞アプリが多くて困る あほの仲間どもに言っとけ
26 :
デフォルトの名無しさん :2007/10/19(金) 23:08:33
じゃ、自己解決ゥ!
27 :
デフォルトの名無しさん :2007/10/19(金) 23:11:28
もひとつ、自己解決ゥ!
29 :
デフォルトの名無しさん :2007/10/19(金) 23:13:31
ああん、自己解決ゥ!
30 :
デフォルトの名無しさん :2007/10/19(金) 23:19:47
YES! 自己解決ゥ!
31 :
デフォルトの名無しさん :2007/10/19(金) 23:21:21
数々の愚行申し訳自己解決ゥ!
32 :
デフォルトの名無しさん :2007/10/19(金) 23:21:45
今日は自己解決君一人でかんばってるな
33 :
デフォルトの名無しさん :2007/10/19(金) 23:22:32
YES! 自己解決ゥ!
34 :
デフォルトの名無しさん :2007/10/19(金) 23:31:16
がんばってます! 自己解決ゥ!
35 :
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2007/10/19(金) 23:34:22
// ̄ ̄ ̄ ̄ ̄\ 彳丿; \,,,,,,,,/ u lヽ 入丿 -◎─◎- ヽミ | u:.::(●:.:.●)u:.::| | :∴) 3 (∴.::| ヽ、 ,___,. u .ノ ⌒ヽ:.___;;;;;;;;;;___.ノ⌒
36 :
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2007/10/19(金) 23:35:31
// ̄ ̄ ̄ ̄ ̄\ 彳丿; \,,,,,,,,/ u lヽ 入丿 -◎─◎- ヽミ | u:.::(●:.:.●)u:.::| | :∴) 3 (∴.::| ヽ、 ,___,. u .ノ ⌒ヽ:.___;;;;;;;;;;___.ノ⌒
37 :
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2007/10/19(金) 23:36:48
// ̄ ̄ ̄ ̄ ̄\ 彳丿; \,,,,,,,,/ u lヽ 入丿 -◎─◎- ヽミ がんばってます! 自己解決ゥ! | u:.::(●:.:.●)u:.::| | :∴) 3 (∴.::| ヽ、 ,___,. u .ノ ⌒ヽ:.___;;;;;;;;;;___.ノ⌒
Hot Soup Processor
40 :
デフォルトの名無しさん :2007/10/19(金) 23:39:04
スクリプトのくせにバリエーションが色々あるんだなw
41 :
デフォルトの名無しさん :2007/10/19(金) 23:40:30
スクリプトです! 自己解決ゥ!
どうみても手動だろww失せろって言われた途端ファビョって連投wwww
AA張るようになったら負け
44 :
デフォルトの名無しさん :2007/10/19(金) 23:41:53
じゃ、初心に戻ります! 自己解決ゥ!
45 :
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ :2007/10/19(金) 23:42:52
// ̄ ̄ ̄ ̄ ̄\ 彳丿; \,,,,,,,,/ u lヽ 入丿 -◎─◎- ヽミ | u:.::(●:.:.●)u:.::| | :∴) 3 (∴.::| ヽ、 ,___,. u .ノ ⌒ヽ:.___;;;;;;;;;;___.ノ⌒
wwwwwww
wwwwwwwwwwwwww
48 :
デフォルトの名無しさん :2007/10/19(金) 23:45:49
なんだ手動かよw
49 :
デフォルトの名無しさん :2007/10/19(金) 23:46:54
手動です! 自己解決ゥ!
中途半端なAA厨だな
飽きたんだろ
52 :
デフォルトの名無しさん :2007/10/20(土) 00:01:16
中途半端なAA厨で、自己解決ゥ!
53 :
デフォルトの名無しさん :2007/10/20(土) 00:04:01
自己解決ゥを連呼するスクリプト オレもつくってみっかなw
調子こいてると運用に通報するぞ マジで
55 :
デフォルトの名無しさん :2007/10/20(土) 00:10:17
>>54 wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なんだ?してほしいのか?
57 :
デフォルトの名無しさん :2007/10/20(土) 00:15:12
>>56 wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
好きに荒らさせておけばいいんじゃね ログ掘りさせる為にも荒らしのレスは多ければ多いほどいい
自演乙
60 :
デフォルトの名無しさん :2007/10/20(土) 00:21:48
急に止まったなwwww へたれの分際で荒らすからwwwwwww
61 :
デフォルトの名無しさん :2007/10/20(土) 00:22:37
じゃ、自己解決ゥ!
ログ掘りなんか待ってられるか とりあえず規制議論に報告してくるわ
63 :
デフォルトの名無しさん :2007/10/20(土) 00:24:52
64 :
デフォルトの名無しさん :2007/10/20(土) 00:29:26
ビビるなよ!いつものように自己解決ゥ!ってレスしろよ!www
64=自己解決ゥ!
66 :
デフォルトの名無しさん :2007/10/20(土) 00:32:40
>>64 自演乙wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
67 :
デフォルトの名無しさん :2007/10/20(土) 00:33:55
荒らしと思われたくないから普通にレスすることに決めたようですwwwwwww ヘタレすぎwwwwwww糞つまんねえから帰るわwwwwwwww
68 :
デフォルトの名無しさん :2007/10/20(土) 00:34:45
帰るわ宣言の後、500回はリロード乙
運用って名が出た途端に自己解決って書かなくなったのは見苦しいな。 あ、一度勇気を振り絞って書いたか。
結局、報告君がヘタレってことで。 解散です。 ご苦労様でした。
sageて書くなよ。自己解決君。
72 :
デフォルトの名無しさん :2007/10/20(土) 00:44:39
73 :
デフォルトの名無しさん :2007/10/20(土) 00:46:36
じゃ、自己解決ゥ!
ペース落ちてるぞ自己解決君。 言われてから反抗するように自己解決と書くのは見苦しいぞ自己解決君。
75 :
自己解決君 :2007/10/20(土) 00:49:06
イェーイ! オレ人気者!! 自己解決ゥー!
馬鹿だなぁ 相手すればするほど喜ばすだけなのに・・・
おいおい、連続投稿制限助けてやってるのにおせーぞ。
HSP厨のスレはどこも底辺
まあ一通りのAPIは使えるから、 自分で作ったほうがどんなものか身に付く。
81 :
デフォルトの名無しさん :2007/10/20(土) 03:45:37
じゃ、自己解決ゥ!
>>80 doubleが受け取れないそうで・・
ランタイムの方で修正してくれればいいのにな
↓はいどうぞ 基地外君
83 :
デフォルトの名無しさん :2007/10/20(土) 12:41:54
基地外で、自己解決!
また、dion か・・ あそこに、書き込んでる時点で、下の下の基地外太郎
基地害御一行様で終了
86 :
デフォルトの名無しさん :2007/10/20(土) 23:06:03
じゃ、自己解決ゥ!
↑基地外乙 あそこの掲示板で 「#」 使う椰子はそう居ないはずw dion と 「#」 で大体見当がついたよwww
88 :
デフォルトの名無しさん :2007/10/21(日) 00:37:51
89 :
デフォルトの名無しさん :2007/10/21(日) 00:46:17
天才で自己解決ゥ!
nってアスペルガーかなんかだろ。 友達にいるからなんとなく分かる。 あれが彼なりの精一杯な口調なんだよ
91 :
デフォルトの名無しさん :2007/10/21(日) 23:04:32
じゃ、自己解決ゥ!
92 :
デフォルトの名無しさん :2007/10/22(月) 19:51:27
本家板の住人は、耐性が無さすぎだな。
93 :
あみじ房 :2007/10/23(火) 00:51:11
よし。質問しよう。 東方projectみたいに、背景だけ3Dにしたい場合、何をどうしたらいいかおすえてください。おながいします。 ちなみにおいらは、昔HSPでクソゲー作ってたのと、DirectXのラッパーライブラリを使って、 2Dのクソゲーを作ったぐらいのしょぼいパワーしか無いです。おながいしまう。
ポリゴン+スプライトで自己解けちゅ
95 :
デフォルトの名無しさん :2007/10/23(火) 01:01:43
じゃッッッ、ソレでッッッッ、……自己解決ゥ〜ゥ!
96 :
あみじ房 :2007/10/23(火) 01:21:41
あと、学生時代みたいに、時間がウンコの様に無いのが困る。 このスレに張り付いてたあの頃の俺は一体何だったんだろう。 日曜だけでも、HSP3をガチでやってみようかな・・・。うーむ。
97 :
デフォルトの名無しさん :2007/10/23(火) 01:22:47
知らんがな
98 :
あみじ房 :2007/10/23(火) 02:03:24
と。まぁ中二病まっしぐらな感じの俺みたいなウンコを、 構ってくれる鬱で神な人も居ないのね。うんこだね。 ポリゴンとスプライトで事故解決しました。もういいやがおー。がーおー。
99 :
デフォルトの名無しさん :2007/10/23(火) 02:06:39
知らんがな
100 :
デフォルトの名無しさん :2007/10/23(火) 02:23:24
100ゲット!
101 :
デフォルトの名無しさん :2007/10/23(火) 03:24:00
102 :
デフォルトの名無しさん :2007/10/23(火) 08:17:42
103 :
デフォルトの名無しさん :2007/10/23(火) 19:05:57
あみぢはたしか、コンテストで受賞したことあるよね? それだけでも凄いんじゃないの。
104 :
デフォルトの名無しさん :2007/10/23(火) 23:36:12
おにたま氏を、神格化していた時代が懐かしいな。 今は、本家ですら「誰それ?あぁ管理人ね!」的なんだもん。w
105 :
デフォルトの名無しさん :2007/10/23(火) 23:47:01
A「あるがーまんってさ」 B「何、そのヒーロー」
106 :
デフォルトの名無しさん :2007/10/24(水) 00:37:11
A「垂れ餡ってさ」 B「え? また何か和菓子で問題発生?」
自己解決ゥ!
108 :
デフォルトの名無しさん :2007/10/25(木) 21:49:58
「n」ってさぁ、自分の事 「ボク」って言うんだなww もう、確定w
109 :
デフォルトの名無しさん :2007/10/25(木) 23:17:06
というか、やたらここで「w」ばっかり書いてる人も 確定じゃないの?
110 :
デフォルトの名無しさん :2007/10/26(金) 04:10:59
じゃ、自己解決ゥ!
111 :
デフォルトの名無しさん :2007/10/28(日) 14:38:06
だって、ここには俺様しか居ねーしwww
112 :
デフォルトの名無しさん :2007/10/28(日) 23:20:52
俺様で、自己解決ゥ!
すいません 2の3乗を整数出力するコードを教えてください
114 :
デフォルトの名無しさん :2007/10/29(月) 00:49:11
b=text a=strmid(b,0,2) とすると正常に動作するのですが、 a=strmid(text,0,2) とすると 変数名が指定されていません と出ます。 何が原因なのでしょうか? #deffunc echo str text, int size, int max_width, int max_height for y, 0, max_height, size for x, 0, max_width, size b=text a=strmid(text,0,2) pos x, y mes a next next return echo "初めまして", 30, 640, 480
>>113 ごめん、聞きたいのは「mes 2*2*2」とか?
「整数出力」の意味が不明瞭。
>>114 「str text」としているので、textは変数ではなく文字列になってます。そのためです。
あとユーザ定義命令全体を#module〜#globalで囲む方がいいと思う。
>>115 #include "hspmath.as"
x=2:y=3:mes int(pow(x,y))
stop
y=3だと値がちゃんとでないんです
hmmのDirectSoundでwaveファイルの重ね再生ができないのは自分の環境の問題?
ふむ
119 :
デフォルトの名無しさん :2007/10/29(月) 23:35:42
垂れ餡掲示板に乗り込んでるな
誰か、ここにnを連れてこいよ。
自分で
>>121 お前が呼べや!
ワシが連れてきたら、自己解決になってまうやろ!
123 :
デフォルトの名無しさん :2007/10/30(火) 00:34:01
? 言い出しっぺが出来ないってことは ヘタレで終了か ご苦労さん
2の3乗って言ってんじゃん mes 8 とか dialog "8" でいいじゃん。何が幸せだバカにしているのか
>>113 それは何が解らないんだ。
・2の3乗を計算する方法が解らない
・整数を出力する方法が解らない
HSPってDLL作れる?
129 :
デフォルトの名無しさん :2007/10/30(火) 23:55:47
すげぇぜ… 書き込みさらりと消してる… ゴクリ…
ゴクリ… 書き込みさらりと消してる… すげぇぜ…
>>126 重ね再生じゃなかった
「ピューン」と鳴るwaveファイルを「ピュピュピュピューン」って鳴らしたいんだけど
「ピューンピューンピューン」ってなってしまう
Directx9.0cは入ってるんだけどなんでだろう
>>131 そんな症状、自分で起きたこともないうえ、聞くのも今回が初めてだ。
説明が抽象的で、状況をつかみにくいんで、
使用したwaveファイルと、検証用のスクリプトを晒して頂きたい所。
思うんだが、HSPでウイルスチェックって意味あるのかな・・・? あと、#includeファイルも付けろよ
マルバツゲームの勝敗判定を作りたいのですが…。 盤面はMap(X,Y)という変数で定義しています。 たて、横、斜めの並びを判定するにはどのようなスクリプトを組めばいいのでしょう?
>>137 マルバツって9マスのアレか?
だったら、勝ちのケースが8パターンしかないんだから
毎回、全通りチェックすれば良いんじゃない?
#include "hmm.as" #enum WAV_1 #enum WAV_2 #enum MAX_WAV //wavバッファの個数 #const WAV_COPY MAX_WAV //コピー用バッファ(MAX_WAVのバッファは使われない) #const MAX_WAV_COPY 128 //コピー用バッファの個数 *main onexit goto *exit HMMInit : DSInit : if stat == DS_ERR : dialog "DirectSoundの初期化に失敗",0 : end DSLoadFname "1.wav", WAV_1 : if stat == DS_ERR : dialog "waveファイルの読み込みに失敗",0 : end DSLoadFname "2.wav", WAV_2 : if stat == DS_ERR : dialog "waveファイルの読み込みに失敗",0 : end dim FlagCommitWav, MAX_WAV //再生予約フラグ repeat getkey key, 90 : if key : FlagCommitWav(WAV_1) = 1 //再生を予約 getkey key, 88 : if key : FlagCommitWav(WAV_2) = 1 repeat MAX_WAV if FlagCommitWav(cnt) == 1 { DSCHECKPLAY cnt //wavが再生中か確認 PlayingCheck = stat PlayTgt = cnt if PlayingCheck == DS_OK { //再生中ならバッファ複製して鳴らす
b = 0 repeat MAX_WAV_COPY DSCHECKPLAY WAV_COPY + b PlayingCheck = stat if PlayingCheck == DS_OK { //空きコピー用バッファを探す b++ } else { PlayTgt = WAV_COPY + b DSDUPLICATE PlayTgt, cnt break } loop } DSPLAY PlayTgt //再生されてない元バッファか複製したコピーバッファを再生 FlagCommitWav(cnt) = 0 //予約を元に戻す } loop await 16 loop *exit HMMEnd end //こんな感じ?
142 :
132 :2007/11/01(木) 16:19:15
>>133 こちらの環境では、連射に合わせて再生されたから、
そちらPC環境の問題である可能性が高くなってきたな。
詳しいことは分からないが、
DirectSoundに対応してないサウンドボードもあるっつーから
dxdiagで、DirectSoundのテスト項目が通るか確認したほうが良さそうだな。
その他。コントロールパネルの、サウンドとオーディオデバイスのプロパティ内の
どれかにある「オーディオの詳細プロパティ」で
「ハードウェア アクセラレータ」の設定も。
参考までに、こちらの環境では、アクセラレータ設定が
「最大」の時に、「ドドドドドドゥーン」だったものが、
「なし」にすると「ドゥドゥドゥドゥドゥドゥーン」くらいになった。
(「ドゥーンドゥーンドゥーン」に少しだけ近づいた。)
nって暇なのかな
data = "012ABC" test = peek(data,3) mes ""+test+"" ってやったときにAを出力したいんでけど数値が出力されてしまいます。 この数値を文字列に変換したいのですが、どうしたらいいでしょうか。 調べてみてstr命令を見つけましたが、うまくいきません。ver3では使えないんですか?
mes strf("%c", test)
常に描き換わるタイプの画面(320*240)を2倍表示したいのですが、 かなり動作が重くなってしまい、思うように動きません バッファ1と2にそれぞれ別種の画像を描画し、重ねて表示します gmode 2 gsel 9 : gzoom 640,480,2,0,0,320,240 gsel 0 redraw 0 gzoom 640,480,1,0,0,320,240 gcopy 9,0,0,640,480 redraw 1 バッファ2には透過させたい部分があるため、 事前にgzoomで別のバッファにコピーしていますが、 これが処理落ちの一因となっているのでしょうか 等倍表示の描画は↓です。これは普通に動きます gmode 2 gsel 0 redraw 0 gcopy 1,0,0,320,240 : gcopy 2,0,0,320,240 redraw 1 どうかご教示お願いいたします OSはXP(SP2)、メモリ256MBです
ただ思いだけなのか処理落ちなのかどっちなんだ
HSPの実行画面が処理落ちしているだけでOS自体は普通に動きます
最低限のエラーが出るソースうp
150 :
146 :2007/11/03(土) 15:20:48
描画が遅いだけでエラーが出るわけではないのですが 描画のソースは *men gsel 8 : gzoom 640,480,2,0,0,320,240 gsel 0 gmode 2 redraw 0 gzoom 640,480,1,0,0,320,240 gcopy 8,0,0,640,480 redraw 1 ----<仮想画面にいろいろ描画>---- wait 1 goto *men という感じです(マイナーチェンジしてますがご了承を)
*men gsel 8 : gzoom 640,480,2,0,0,320,240 gsel 0 gmode 2 gzoom 640,480,1,0,0,320,240 redraw 0 gcopy 8,0,0,640,480 redraw 1 ----<仮想画面にいろいろ描画>---- wait 1 goto *men
試してみましたが、これといって動作は改善されず、 また画面がちらついて見えるようになってしまいます ところで、言いにくいのですが wait 1 を await 1 に変えたら自己解決してしまいました (等倍表示も2倍表示も同じように描画されます) これは単純なメモリ不足ということでしょうか・・ 何はともあれお騒がせして申し訳ございません
真・自己解決ゥ!か・・・ しかし何故そこからメモリ不足という推論がでてくるのか分からん。
await 15〜17くらいにしとけ。await 1はそもそも無理がある
155 :
デフォルトの名無しさん :2007/11/03(土) 23:19:10
じゃ、自己解決ゥ!
ご教授おねがいします!!自己解決しました!!
自己解決してしまいました どうかご教示お願いいたします
>>142 遅れて悪いけど、丁寧にどうも。
でも、どれも問題はなさそうだった。
DirectSoundのテストは全部パス、ハードウェアアクセラレータも最大。
原因は分からずとも、一応自身の環境の問題みたいなので、これ以上はスレ違いだね…
ともあれ本当にありがとう。
160 :
デフォルトの名無しさん :2007/11/04(日) 23:14:13
どうしたら自己解決出来ます自己解決しました!
自己解決お願いします!!
162 :
デフォルトの名無しさん :2007/11/04(日) 23:31:31
163 :
デフォルトの名無しさん :2007/11/04(日) 23:34:49
じゃ、自己解決ゥ!
ねがいします!!
ごわさんにねがいまするのか?
166 :
デフォルトの名無しさん :2007/11/06(火) 23:24:04
そもさん!
167 :
デフォルトの名無しさん :2007/11/06(火) 23:24:40
せっぱ!
168 :
デフォルトの名無しさん :2007/11/06(火) 23:36:54
169 :
デフォルトの名無しさん :2007/11/07(水) 00:06:52
掲示板なんかこの世からなくなってしまえ。
セパハン 1-1 浦和レッズ
171 :
デフォルトの名無しさん :2007/11/08(木) 00:17:23
じっ・・・ じっ・・・、自己解決ゥ!
172 :
デフォルトの名無しさん :2007/11/08(木) 18:55:23
HSPからDirectX使えるの?
HSP3.1のダウンロードが糞重い うちの環境だけ?
事故か池つ
telnetライブラリってありますか?
177 :
デフォルトの名無しさん :2007/11/14(水) 23:44:03
kaso
178 :
デフォルトの名無しさん :2007/11/15(木) 22:44:22
C言語は経験ありますがHSPは超初心者です。 質問です。 boxfなどで矩形を描画し、その上にmesで文字を描画できますが boxfなどは背景ととらえて良いのでしょうか? それともmes命令が文字描画として特化した命令なんでしょうか? 稚拙な質問で申し訳ないですが教えてください。
Win32APIのFillRectをboxf、DrawTextをmesだと思えばいい
HSPで円グラフを作ろうと思っているのだけれどもなかなかうまくいかない データ入力をしたら円を書いて区切ってくれるという簡単なプログラムでいいのだけど 誰かヒントください
>データ入力をしたら円を書いて区切ってくれるという簡単なプログラム この仕様だと果てしなく難しいな
矩形って、何て読むの?
183 :
デフォルトの名無しさん :2007/11/15(木) 23:34:47
た… ゲフンゲフン 何でもない。
クケケケケケケケケケケケ
コナミ矩形波倶楽部
186 :
178 :2007/11/16(金) 00:03:36
>>179 分かりやすい例えありがとうございます。
何て読むの?
>>181 果てしなくはないだろうけど、円を書くのはちと面倒だな。
後は大して難しくないだろ。
トリップ無くしたけど、要らないので、事故解決しました。
190 :
デフォルトの名無しさん :2007/11/17(土) 00:36:58
じゃぁ! じっ…、 じっ…、自己解決ゥゥウウゥ〜〜〜!!
すみません。 以下のようにしてチェックボックスの背景色と文字色を変更しようとしたのですが、 OSがMeだと文字色も変わるのですがXPだと背景色しか変わりませんでした。 オーナードローを使えばなんとかなることは分かりましたがチェック状態まで自分で管理するのは ちょっと面倒なので他の方法はないでしょうか? #uselib "gdi32" #func SetBkMode "SetBkMode" int,int #cfunc GetStockObject "GetStockObject" int #func SetTextColor "SetTextColor" int,int #define ctype RGB(%1,%2,%3)(%1|%2<<8|%3<<16) oncmd gosub *ctlcoloredit,$138 hBrush=GetStockObject(4) a=0 screen 0,320,240,4 cls 4 objsize 100,20 pos 5,5 : chkbox "チェックボックス",a chkhwnd=objinfo(stat,2) stop *ctlcoloredit if chkhwnd == lparam{ SetBkMode wparam,1 SetTextColor wparam,RGB($FF,$FF,$FF) return hBrush } return
よくよく考えたらこうすればよかったんですね。 font "MS P ゴシック",12 objmode 2 color 255,255,255 objsize 10,20 pos 5,5 : chkbox "",a chkhwnd=objinfo(stat,2) pos 17,5 : mes "チェックボックス" stop
お約束の一言をどうぞ
じゃ、自己満足ゥ!
じゃあ俺てゐ使うわ
196 :
デフォルトの名無しさん :2007/11/18(日) 23:27:18
あん♥ 自己解決ぅん♥
197 :
デフォルトの名無しさん :2007/11/22(木) 19:33:57
質問です3.0と3.1の変化など教えてください。 3.0ではできないような事やここは3.0のがよかったなみたいな事をお願いします
199 :
197 :2007/11/22(木) 19:39:06
そこをお願いします
if(S&16=16)&(T=0) : T=1:A=X:B=Y ;・・・(1) を if S&16 : if T = 0 : T=1:A=X:B=Y ;・・・(1) に変える.これはHSPがおかしい
>>203 ありがとうございます。
何がおかしかったのかはよく分かりませんが、一応解決しました。
論理演算がビット演算になってる罠
Cとかで、プロでも = と == について 「ifの時は==」 とかいう、 意味不明な覚え方してる人が居ると ソフト屋さんの知り合いから聞いたことあるよん。 こんなんで、世の中よく動いてるね・・・・。
>>203 解決策はあってるけどHSPがおかしいわけじゃないだろ
Cを含む大抵の言語で論理和より比較演算子の方が優先度高いぞ
>>204 HSP3.0以降だと
if(S&16=16)&(T=0) : T=1:A=X:B=Y ;
は
if(S&(16=16))&(T=0) : T=1:A=X:B=Y ;
こう解釈される。&より=の方が先に計算されちゃう。
ビット演算子と論理演算子が両方ちゃんとあれば,(S&16)=16なんて書く必要ないわけだが
そういう意味か 確かに論理演算子は欲しい
210 :
デフォルトの名無しさん :2007/11/23(金) 23:19:11
じゃあッ! 自己解決ャーッ!
HSPの本はどれがオススメですか?
自己解決で学ぶHSP入門
HSP史(上・下巻)
AMmidi手に入りましたアッー! ありがとうございましたアッー!
*start screen dim word,512 repeat 1024 : wpoke word,cnt*2,(12345)+cnt : loop bsave "bin.aaa",word,-1 end これで作ったbin.aaaの中見てみたら、どうやら最初の値(12345)がちゃんと保存されないみたいなんだけど バイナリエディタで見ると「39 30 3A 30 3B…」ってなってる なんでだっぜ
ヒント:リトルエンディアン
エンディアン 嘘 つかない
( ゚д゚)ポカーン
(3*16+9) + (3*16+0)*256 = 12345
>>220 その言葉だけで意味が分かるんなら、
初めから聞かなくても分かったんじゃねーの?
222 :
デフォルトの名無しさん :2007/11/27(火) 00:09:20
マジレスで自己解決ゥ!
早いよ
226 :
ふかわりょう :2007/11/27(火) 23:39:31
サンプル提示させといて「出来ました!」は違うよね サンプル提示させといて「出来ました!」は違うよね
hsp久しぶりにつかった。ゲームに付属する予定のコンフィグ。 VB.NETとかで作ると、.netフレームワークが居るからウンコすぎる。
VB.NET(笑)
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ | |r┬-| | VB.NET(笑) \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
ミラバケッソ
要するに俺が頭悪すぎるのが問題なんだけど、 回転した長方形(極端に縦横比の大きいレーザーとか) と、点(とりあえず自機中心座標でおk)の、当たり判定をやりたくなったけど、 一体何から調べればいいのかが分かりませんえんまんえんおくえん。 昔は単純な■判定を重ねていただけだったが、格好悪いし、縦横比がデカいとツラい。 座標の回転とか要るのかな? 敵 ■ .■ ■ ■ .■ ■ ■ .■ ■ bool unko(double mx,double my,double ex,double ey, ang/*(敵発射角度rag)*/,double b /* レーザーの太さ */); こんな少ない情報で何とかしてくれる関数が売ってたら5000円まで払うぜ。
俺だったら ・点と直線の距離を求める式 ・点と点の距離を求める式 を組み合わせる。
長方形の各辺が座標軸と平行になるように座標変換すればいいよ
マジでありがとうございます。 頑張れそうです。
最近始めたから覗きにきたが レベル高すぎてついていけないぜ…。 半年後tに出直そう
236 :
デフォルトの名無しさん :2007/11/30(金) 23:31:26
( ´-`).。oO(あのマカーは本気なのか単に荒らしたいのか…)
ftpopenのstatが、接続の成功/失敗にかかわらず、0を返すんですが、 他の方もそんなかんじですか?
質問させていただきます。WindosxXPでHSP3.1を使用しています。 KERNEL32.DLLのAllocConsoleで作成したコンソール画面を使用しているのですが、 右上のx(閉じる)ボタンを押すと、コンソール画面だけでなくプログラム本体も閉じてしまいます。 この際、本体で設定したonexitが実行されず、終了処理ができないでいます。 コンソール画面の閉じるボタンを本体の終了処理に連動させる方法はあるでしょうか?
239 :
デフォルトの名無しさん :2007/12/02(日) 15:55:31
今開いているウィンドウの大きさを変えるのはどうしたらいい? ginfo_sizex=300 ginfo_sizey=200 とやっても変わらないんですが
width 300,200,,,
241 :
239 :2007/12/02(日) 16:01:29
242 :
デフォルトの名無しさん :2007/12/02(日) 16:27:09
mesboxにログを表示してるんだけど 文字列を足したときについでに最終行にスクロールさせたいんだけど どうしたらいい?
243 :
242 :2007/12/02(日) 17:46:24
自己解決ゥ! sendmsg で $B6 だった
>>238 コンソールウィンドウのウィンドウプロシージャをカスタマイズ(サブクラス化?)
しなきゃいけないんじゃないの? あるいはコンソールウィンドウのスタイルを
変更してクローズボタンを無効化するとか。
できるかどうか知らんけど。
>>244 レスありがとうございます。
サブクラス化の方がかっこいいですが、とりあえずスタイル送ってクローズ無効化してみます。
HSP 2.61 か HSP 2.61a を使っている人に聞きたいのですが、 以下のコードを実行するとどのように表示されますか? buf = "すし\nてんぷら\nてっかどん" notesel buf notemax len mes "" + len noteadd "", 1, 1 notemax len mes "" + len mes buf stop
248 :
デフォルトの名無しさん :2007/12/03(月) 14:32:58
sockget でエラー検出時に取り得る statの一覧を 教えてください
249 :
デフォルトの名無しさん :2007/12/03(月) 14:44:35
ループ内で sdim で変数を宣言すると 通るたびにmallocされたりするのでしょうか
250 :
デフォルトの名無しさん :2007/12/03(月) 16:08:46
実行時に必要なDLLをpackfileに入れて 単体で動く実行ファイルを作ることは可能ですか? 普通にhspsock.dllなどを入れるだけでは駄目みたいですが コツとかありますか?
マニュアル嫁
マニュ・・・ア・・・ル・・・?
253 :
デフォルトの名無しさん :2007/12/03(月) 17:53:55
なぜ、mesboxの中の文字列はどうやって取得する方法はある?
イエース,mesboxの中の文字列はどうやって取得する方法はある!
学生時代に作ったウンコゲームの雑誌掲載依頼が来て吹いたw 昔は何度もあったが、今になって来るとはwwww
>>247 どうもありがとうございます。
noteadd 空文字列 でぐぐって 2.x の changelog 見て
変だなと思っていました。
2.61 は使い続けたいので、\n で上書きしてから
一行増えた分を notedel で削除することにしました。
HSPでは高速で画像を重ね合わせる処理は難しいのでしょうか? たとえば、背景に雲の画像を重ねて多重スクロールさせる様な処理とかですが。
randomize buffer 99,640,480:cls 4 r=0:g=0:b=0:i=0 for yy,0,16,1:for i,0,16,1:for g,0,255,16:for r,0,255,16 color r,g,b:line 200+(i*256+r)/16,100+(yy*256+g)/16,200+(i*256+r)/16+8,100+(yy*256+g)/16+8 next:next:b+=1:next:next ;picload"back01.jpg" dim stardot,10:stardot(1) = 200 buffer 1,640,480:cls 4 color 255,255,255 for i,0,stardot(1),1:pset rnd(640),rnd(480):next screen 0,640,480:cls 4 scroollx = 0 *mainrooll redraw 0 gmode 0:pos 0,0:gcopy 99,0,0,640,480 gmode 2 pos scroollx,0:gcopy 1,0,0,640-scroollx,480 pos 0,0:gcopy 1,640-scroollx,0,scroollx,480 redraw 1 scroollx = scroollx+1:if scroollx>640:scroollx=0 *loopbreak stick key,0:if key=16:end wait 1:goto *mainrooll
buttonで作ったボタンには""で指定した文字列が入りますよね。 この""に入る部分に変数を指定したいんですけど、そういうことはできるんでしょうか? クイズゲームで問題文と解答候補を別ファイルから読み込んで正答誤答をnotegetで変数に格納、 格納した解答候補の文字列をbuttonに印字、ということを考えているのですが…。
>>262 こんなコマンドがあったとは…
ありがとうございます 無事解決できました。
じゃ、自己解決ゥ!
265 :
デフォルトの名無しさん :2007/12/08(土) 21:57:13
エクセルみたいなグリッド格子の付いたセルを使うための 便利なライブラリを紹介しなさい
267 :
デフォルトの名無しさん :2007/12/08(土) 23:33:24
268 :
あみぢ厨 :2007/12/08(土) 23:44:45
そんなのをhsぷーでやろうとするのがすごい ちなみにそんなライブラリ知りません 知らないならはつげんするなって? すみません
つEXCEL
screenとかbgscrでウィンドウ作ると、作った広さと色数だけメモリ消費するけど、 特定の領域だけフルカラーで、あとは非描画でメモリ節約したりする方法無いでしょうか。
271 :
265 :2007/12/09(日) 03:11:34
>>269 それしかないか
excelのコントロールを貼り付けるのが一番速そうだな
>>270 日本語でOK。
>非描画でメモリ節約
非描写っていっても読み込んだらメモリ使われるわけだから、
メモリ節約したいなら、ファイルに書き出しておくしかない。
>>272 すまんこ。多ウィンドウの画像ビューワー作ってます。
回←これをウィンドウとすると、内側の四角内に画像がある感じです。
ウィンドウ可変・最大化のために、どんな画像でも
とりあえずデスクトップサイズでscreenサイズを確保して、中心に画像をputしてるので、
画像の無い部分がもったいないなと思ったのです。
>>273 ;パレットモードのウィンドウの中にフルカラーのウィンドウを配置
#include "user32.as"
screen 0,640,480
a=hwnd
repeat 10
hsvcolor cnt*19,255,255
boxf 0,cnt*48,640,cnt*48+47
loop
bgscr 2,320,240,2,160,120
repeat 10
hsvcolor cnt*19,255,255
boxf 0,cnt*24,320,cnt*24+23
loop
SetParent hwnd,a
gsel 2,1
こんな感じ?
275 :
274 :2007/12/09(日) 16:02:03
間違えた screen 0,640,480 ↓ screen 0,640,480,1
>>274 ありがとうございます。こんなAPIあるんですね。
ちゃんと親ウィンドウで切り抜かれるんで、使えそう。
メモリも3〜4M節約できてるみたいです。(1600x1200時)
画像を30〜40枚開くのが前提なので、実際は100M単位の節約ができそう。
あとは動きの無いウィンドウを定期的に検出して、
ウィンドウからはみ出して見えない画像をスワップアウトするとかしてちまちま稼ぐしか無いですかね。
# ちょっと試したところだと、スクロール(SetScrollPosとか)が使えないので、(親ウィンドウだけスクロールしてしまう)
# 独自のスクロール実装が必要そうです。
# 実際は2つのウィンドウなので、マウス操作全般のウィンドウプロシージャがちょっとややこしくなりそう。
# 1から作り直した方が早いかも・・・。
># ちょっと試したところだと、スクロール(SetScrollPosとか)が使えないので、(親ウィンドウだけスクロールしてしまう) これはwikiのHSP Bug Trackにも同じようなこと書いてあるけどHSP3の不具合だと思う。 HSP2で同様の事をしたらちゃんと動いたし。
>>277 まじかー。次のリリースで直るといいけど・・・。
直るまでちょっと待ってみるか。
HSP3の不具合って言ったけどこっちのはAPIで直接操作してるしBugTrackの内容とは異なるな。 スクロール量にあわせてSetWindowPosで動かすしかないかも。 あまり役に立たなくてすまん。
hsp3.*でレジストリの情報を読み出し(書き込みはしない)、 テキストファイルに出力ってどうやればよいのでしょうか?
複数のソースファイルに分けて開発してる場合、 どのソースファイルでコンパイル開始しても正常に動作する工夫とかできるかな? いまはメインソースファイルからコンパイルしたスイッチが入ってないと他のソースファイルでは停止終了するように作ってるけど。
>>281 Cygwinとか入れて、Makefile書いておけば?
>>283 HSP3用のコマンドラインコンパイラを探す
>>281 どのソース(ウィンドウ)から実行しても決まった名前のスクリプトをコンパイルする
仕様のコンパイラ(外部ツール)作れば?
288 :
デフォルトの名無しさん :2007/12/13(木) 20:23:16
289 :
デフォルトの名無しさん :2007/12/13(木) 23:07:33
ゲルググ
290 :
デフォルトの名無しさん :2007/12/13(木) 23:31:39
昔HSPスレで某コテハンを名乗っていたものです。 なんとなく思い出して見てみましたけど… ぜんぜんかわってねぇなぁって思いました。
291 :
デフォルトの名無しさん :2007/12/13(木) 23:33:01
じゃ、自己解決ゥ!
292 :
デフォルトの名無しさん :2007/12/13(木) 23:33:18
なぁなぁ、メーリングリストってスパマーの登録をどうやって避けてるんだ? スパマーが登録して広告をMLで長島来るって話をあまり聞かないのだが。
>>292 MLの管理人がBANすればよいだけじゃない?
>>281 #defineと#ifndefで工夫する
test
>>281 head.hsp:(
#ifndef head
#define head 1
...
#include "main.hsp"
#endif
)
main.hsp:(
#ifndef main
#define main 1
#include "head.hsp"
...
#endif
)
ってパッと思いついたけど通らないのかな
これはとりあえず動くみたいだけど、もっとファイルが多いもの作る時、 どのファイルからでもコンパイルできるようにするとしたら、そのためだけ のコード書くのめんどいな。 (main.hsp) #define _main_ #ifndef _sub_ #include "sub.hsp" #endif mes "main" submes (sub.hsp) #define _sub_ #module #deffunc submes mes "sub" return #global #ifndef _main_ #include "main.hsp" #endif
buffer 2,640,480:cls 4 color 255,255,255:boxf 0,0,640,480 dim movex,3:dim movey,3 ballmovex = 0:ballmovey = 0 movex(1) = 1:movex(2) = -1 movey(1) = 1:movey(2) = -1 mx = 1:my = 1 screen 0,640,480:cls 4 *main redraw 0 color 0,0,0:boxf 0,0,640,480 ballmovex = ballmovex + movex(mx) if ballmovex > 602:mx = 2 if ballmovex < 0:mx = 1 ballmovey = ballmovey + movey(my) if ballmovey > 448:my = 2 if ballmovey < 0:my = 1 pos ballmovex,ballmovey:gcopy 2,0,0,32,32 redraw 1 color 255,255,255 pos 0,120:mes "x"+ballmovex pos 0,136:mes "y"+ballmovey stick key,15 if key=16:end await 5 goto *main これって、もっと高速に跳ね回るように出来ないのでしょうか?
ballmovex = ballmovex + movex(mx)*10 とか
301 :
デフォルトの名無しさん :2007/12/19(水) 14:29:41
超長い文字列を使ってるんだけど strlenで文字列長取得すると 32767文字くらいまでしか返ってこない shortじゃなくてlongで返してほしいんだけど、どうしたらいい? つーか、HSPってlong型とかあんの?
とりあえず3.1ではそんなことはないけど? HSPの整数は標準で32ビットだよ。
GlobalAllocとか使うとかとかとかとかとかとかとかとかとかとかとか
>>301 s=""
repeat 3276
s+="とかとかとかとかとかとかとかとかとかとか"
loop
mes strlen(s)
>301 つーかshort型がないだろ。 あるのは32Bit整数と倍精度浮動小数と文字列型だけだろ。
306 :
301 :2007/12/19(水) 22:16:26
自己解決しました
307 :
デフォルトの名無しさん :2007/12/19(水) 23:06:02
じゃ、自己解決ゥ!
308 :
デフォルトの名無しさん :2007/12/20(木) 09:28:58
フォントの大きさが指定できない font "Terminal",10,0 mes "あいうえお" とやっても10ポイントの文字にならない なぜだよ
stick key,256 ; 左クリックを監視する mx=mousex ; マウスのX座標 my=mousey ; マウスのY座標 if key&256{ if (mx>200)&(mx<(200+bx))&(my>100)&(my<(100+by)) : break ; ボタン上でクリックしたらループ抜ける } これの&についてなんだけど、何で=じゃなくて&なの? 演算子&についての詳しい説明がほしいんだけど、見つからないし。 =と同義で使えるというわけでもないし、かといってこれを=に置き換えても挙動は同じ。 ifの後における等号や不等号と合わせて且つの意味で使うだけでない、どういう意味があるの?
>>309 論理式が正なら1だからだろ
つーかそもそも文脈上どう考えてもequal条件じゃなくてand条件だろ
なにより他言語での文法との混同を避ける意味で
&じゃなくandって書くべきだろ
最もHSPのANDは&のマクロで、結局論理積でしかないけどな。
そういえばそうだったな。もうオレは死んだ方がいいな
ワロタ
314 :
デフォルトの名無しさん :2007/12/20(木) 23:14:03
イ`!
>>310 そのand条件とやらについて知りたいってのが最後の文章そのものなんだけど・・・
if a=10&B=10とかなら意味としてわかるけど。
if 10&10では主語の部分がなくてよくわからん。変数&数字、の場合だけなんか意味をなすとか?
前者に後者が含まれるという意味だ、と解説してるサイトもあったけど。
マニュアルにはこのへん載ってないし(等号不等号とあわせてしか)、どこ見てもstickには説明なくナチュラルに&使われてるし。
意味伝わるかなぁ・・・
>>315 論理積 と ナンシー関 って似てると思わないか?
みんなよく間違えるからWikipediaで違いを確認するといいよ
HSPの&,&&,andは論理積でなくビット単位AND
>317 HSPは「&&」なんて使えたか?
>>315 if (value){
〜〜
}
はvalueが0でないときに〜〜が実行される。0のときは実行されない。
if (key=512){
〜〜
}
はkeyが512に等しいときに〜〜が実行される。512でないときは実行されない。
((key=512)はkeyが512に等しいなら1、等しくないなら0になる。)
if (key&512){
〜〜
}
は(key&512)が0でないときに〜〜が実行される。(key&512)が0のときは実行されない。
2番目と3番目はkey = 512 + 256のときとかに違いが出る。
stickならボタン同時押しとかな。
&の意味については「&演算子」でググれ。CでもJAVAでも意味は同じだ。
test
>>319 を勝手に補足。
>>2 番目と3番目はkey = 512 + 256のときとかに違いが出る。
ここで512と256が2の倍数だというところがミソ。
512 = 0b1000000000
256 = 0b0100000000
ここで0b〜は2進数表記という意味。
(512+256)&256は256だけど、(11+1)&1は1じゃないので注意。
>>321 2の倍数じゃなくて2の乗数または2の冪
323 :
321 :2007/12/22(土) 16:35:31
これは失礼。
どんま〜い! 3 ・ 2 ・ 1! 3 ・ 2 ・ 1!
325 :
デフォルトの名無しさん :2007/12/22(土) 18:55:43
時計表示について質問です 5時4分を「5時04分に」表示させるのは、文字列型での表示の仕方は「strf」を使えばいいのですが 数値型にして表示するのが分かりません。 教えてください。お願いします
>>325 ?????????????????????????????????????
?????????????????????????????????????
?????????????????????????????????????
?????????????????????????????????????
?????????????????????????????????????
ノベルゲームなんかでよくあるような、画面切り替え時にページをめくる感じにしたりとか モザイクがかかっていくとか、下から次の画面の背景がでてくるとか、そういう表現あるかな? clsで消して再描写ってだけじゃなんか味気なくて。
>325 何言ってんだ?お前。
>>327 gmode gcopy gzoom だけでも、かなりのパターンを作り出せるぞ。
とはいえ、cls を多用してるようじゃ辛いかもな。
atoiじゃないのフヒィ!?
フヒィって何
照れ隠しの単位です。 現在のレートは 1フヒィ=113.4サーセン です。
フヒィ高サーセン安
334 :
デフォルトの名無しさん :2007/12/23(日) 23:13:13
意味不明な時はァ、自己解決ゥ!
>>329 あーそのへんを使ってやらないと駄目なのかぁ。
ノベル向けってわけじゃないからそんな専用の命令なくて当然か。さんくすー
ノベル作るんだったら(ry
337 :
デフォルトの名無しさん :2007/12/25(火) 23:28:53
あそこは垂れ餡先生しか教師がいない状態になりつつあるのか…。
338 :
デフォルトの名無しさん :2007/12/26(水) 11:31:25
Elonaって実はHSP製なんだよね ソースコードが計20万行越えてて吹いた
>338 そりゃ随分と重そうだなw そういや、HSP3の逆コンパイラってあるのか?
ググれ
341 :
デフォルトの名無しさん :2007/12/27(木) 00:23:19
ググって自己解決ゥ!
モジュールの中から外部のラベルを呼び出す方法は調べてわかったんですが、 グローバル空間からoncmdでモジュール内のラベルを直接的に呼び出すにはどうすればいいのでしょうか
ユーザ定義命令経由以外でモジュール内に飛び込むのは無理じゃね?
344 :
342 :2007/12/28(金) 18:53:27
どうやらnewmodでモジュール型変数を作ると gosub hoge@モジュール名でモジュール内を呼び出せるようです。 なのにgosub label@hspという方法ではモジュール内からグローバルのラベルに飛べないのは何故なんでしょう
JAVAでいうfinalみたいな定数を作成するにはどうすれば? マクロ宣言時に変数を展開する方法があれば#constや#defineでもいいのですが
Cでいうconst? 無いかも
>>344 gosub label@ で飛べない?
>>347 ありがとうございます、できました
@hspはプリプロセッサ命令を扱う時に用いるんでした
統一するか併用してくれればいいのに
349 :
デフォルトの名無しさん :2007/12/29(土) 23:49:15
HEY YO!
350 :
デフォルトの名無しさん :2007/12/30(日) 01:46:05
randomize pos 20,20:mes zyukugo.rnd(15) pos 20,55:mes zyukugo.rnd(15) pos 20,90:mes zyukugo.rnd(15) pos 20,125:mes zyukugo.rnd(15) pos 20,160:mes zyukugo.rnd(15) pos 20,195:mes zyukugo.rnd(15) この6行のうち1行をランダムに選択、その選択した行のrnd命令が結果として選んだ数値を取得する なんて事できないかな? ランダムに15種の熟語のうち6つが表示されて、そのうち1つの回答を示すようなゲームみたいなの つくってるんだけども・・・これができないとやたら長くなっちゃう。
>>350 何がしたいのか、何が言いたいのかよく分からないが
データベース中に、15のデータが格納されていて、
その中から6つをランダムで取り出すのを目的とした場合、
その記述のままだと、同じデータが重複されて取り出されるときがある。
場合によっては、6つとも同じデータが取り出されてしまう可能性も存在する。
repeat 6 tmp = rnd(15-CNT) hyouji.CNT = zyukugo.tmp swap zyukugo.tmp,zyukugo.15-CNT ;swapは#defineしておく pos 20,30*CNT+20 : mes hyouji.CNT loop このあとhyoujiからランダムで一個選べばいいんだけど 元配列を並び替えてるのと、元配列の何番目か判らないのは問題かな? 必要条件が確定してないから
>>350 適当に作ってみた
randomize
sdim zyukugo,4,15
dim table,6
zyukugo="1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"
a=1
repeat 6
table(cnt)=rnd(15) ;乱数を記録しておく
loop
input a,32,,1
pos 32,0:mes "行目を or"
pos 80,0:button gosub "選ぶ",*erabu
pos 200,0:button gosub "ランダム選択",*random
gosub *erabu
stop
*random
a=rnd(6)+1
*erabu
if (a<1)or(a>6):dialog "1〜6行目を選択しやがれこのウジ虫めが!":return
color 255,255,255:boxf 0,40,640,480
repeat 6
if cnt=(a-1){
color ,,128:boxf 0,40+35*cnt,640,58+35*cnt
color 255,255,255
}else:color
pos 20,40+35*cnt:mes zyukugo(table(cnt))
loop
color:pos 20,300:mes "選んだ行:"+a+"\n数値"+zyukugo(table(a-1))
return
354 :
350 :2007/12/30(日) 14:21:58
>>351 あーその通りだわ・・・指摘されるまで気づかなかった\(^o^)/
英熟語が6つ表示されて日本語が一つ表示される。その日本語に合致するのは6つのうち
どーれだ、って話。
その為には日本語の選択をランダムに選ばれた6つの英熟語のどれかに準拠しないと
どれもハズレって事になっちゃう、って意味だったんだけど。
>>352 わざわざありがたや。
4行目を理解するのに数十分かかったぜ・・・。351の指摘の内容を修正できてるって事よね?
でもそれでも解答をどう出すかがわからない。
さて、
>>353 の理解に着手しよう・・・どれだけ時間かかるやら怖いけど。
355 :
350 :2007/12/30(日) 14:57:12
>>353 ありがとう。とりあえず理解でけた・・・ふぅ。でもこれ、351指摘の問題でちゃうね。
それに根本的に何やら違う事に。長文の質問はウザいかと思ったけど
わざわざ作って答えてくれる人の事を考えるともっとちゃんと説明すべきだったか。
やりたいコト:
基本的に上記354の通り。さらに細かく言うと
6つの英熟語はボタンを模した画像の上に表示、擬似ボタンにして、それぞれ正解をクリック
すれば正解の処理に、間違いの5つのどれかをクリックすれば不正解の処理に移行。
という構想で・・・とりあえず日本語の方を表示する段階になって、選ばれた6つの英熟語の中から
さらにランダムでどれかを選んで、それに対応したのを表示できないかな、って。
それで
>>350 のような内容に。
でもどっちみち表示だけを考えてちゃ正解かどうかの処理ができないのか・・・?('A`)
けど熟語は最終的に膨大な数になるから一つずつ問題をつくるとものすごく長くなっちゃうし、と・・・
357 :
353 :2007/12/30(日) 22:13:44
>>355 言いたいことは大体分かった。また適当に作って書こうと思ったらなんか面白くなってきて作りこんでしまった。正直、自己満足の領域。
選択の部分は擬似ボタンではないけど重要部分は大体書いてある。
問題の選出とかは他にもいろいろあるので自分の好きなやり方で。
randomize gettime(7)
sdim mondai,16,6
sdim zyukugo,16,6
mondaimax=6 ;問題の数
kaitou=4 ;回答の数
mondai="山","川","海","空","森","湖"
zyukugo="mountain","river","sea","sky","forest","lake"
;このとき、mondai.numの問題に対してzyukugo.numの解答が正しい
num=rnd(3) ;問題の種類を決める
mes mondai.num+"は英語で?\n"
;回答群(3種)を作製する。このときあえて回答群に正しい解答を含まないようにする。
;問題が重複しないように乱数を作る
dim list,mondaimax-1
repeat mondaimax-1 ;問題番号を抜いた0から順に1ずつ増加させた配列を問題数-1個作る(たとえば問題2なら0,1,3,4,5の配列)
if cnt>=num:list.cnt=cnt+1:else:list.cnt=cnt
loop
repeat 10 ;ループの回数だけ配列をシャッフルする
a=rnd(mondaimax-1)
b=rnd(mondaimax-1)
c=list.a
list.a=list.b
list.b=c
loop
358 :
353 :2007/12/30(日) 22:14:25
list.rnd(kaitou)=num ;正しい解答を後から回答の数内に収まるように代入 ;あとは回答の数だけ回答を表示して正しい解答を選択させる repeat erabu=-1 redraw 0 color 255,255,255:boxf 0,40,640,480 repeat kaitou ;回答の数だけ回答を表示 pos 20,40+cnt*18 ;回答の上にカーソルがある場合色をかえて表示。そのときの回答番号も記録しておく if ((mousey-40)/18)=cnt:color ,,128:boxf 0,40+18*cnt,640,58+18*cnt:color 255,255,255:erabu=cnt:else:color mes zyukugo(list(cnt)) loop if erabu>=0{ pos 20,180:color if list(erabu)=num:mes"正解":else:mes"不正解";回答番号から回答の種類を参照して照合 } wait 1 redraw 1 loop
359 :
353 :2007/12/30(日) 22:17:59
コメントの回答群(3種)ってのは間違いで4種類表示になってるけど気にしないでくれ
質問です。 キーボードのボタンを押すと音が出るというプログラムをつくろうとするとボタンを押して離した後に音が鳴ってしまいます。私としてはボタンを押した瞬間に音を鳴らしたいのですが、どうすればいいでしょうか。
2008
362 :
350 :2008/01/01(火) 05:44:19
あけおめなんだぜ
>>357 うおーありがたや。めちゃ参考になった。思ったとおりのができたよ。
理解できない部分が若干残ってるけど・・・今後のレベルアップに期待して
今は深く考えすぎないようにする。ほんと助かった、ありがとん。
しかし元旦から何をやってるんだ俺は\(^o^)/
363 :
350 :2008/01/01(火) 06:03:43
364 :
デフォルトの名無しさん :2008/01/01(火) 09:56:29
じゃ、自己解決ゥ!
365 :
デフォルトの名無しさん :2008/01/01(火) 13:03:49
マップチップは32*32サイズで キャラのサイズが移動はビット単位の当たり判定がしたいんだけど どう考えりゃいいの?
366 :
デフォルトの名無しさん :2008/01/01(火) 13:04:23
訂正 キャラサイズ32*32で移動がビット単位
posx % 32
368 :
デフォルトの名無しさん :2008/01/01(火) 19:27:21
if (a=1)&(b=2)|(c=3)&(c=4):mes "HSP" こういう条件式を書いたとき、片方の条件式)(c=3)&(c=4)が成立している時は、mes命令が実行されるのですが (a=1)&(b=2)が実行されても,mes命令が実行されません。 どうしたらよいのでしょうか?
(c=3)&(c=4)っていつ真になるの?
a = 1 b = 2 if (a=1)&(b=2)| (c=3)&(c=4) :mes "HSP" if (a=1)&(b=2)|((c=3)&(c=4)):mes "HSP"
if ((a=1)&(b=2))|((c=3)&(c=4)):mes "HSP"
#include <stdio.h> int main() { int a = 1, b = 2, c = 0; if(a == 1 && b == 2 || c == 3 && c == 4) printf("HSP"); return 0; } HSP始まったな
アプリとして配布した後に、その各々の使用者が任意で画像やBGMを差し替えられる ようにってできる?
1 iniファイルにパスを書く 2 アプリ内で設定できるようにする 3 特定のファイル名のファイルを使う
コンボボックスの選択が変更されたら画面上の 他の項目を更新するようにしたいんですが、 repeat 〜 loopで監視するしかないんですかね? ボタンやメニューを表示し終わったらstopで終わりたい気がするんですが 最後にrepeatを設置するのは落ち着かない感じがしません?
ありがとうございます、助かりました。 コンボボックスとウィンドウメッセージが関連してることを知らなかったので マニュアルの割り込みの項や、リファレンスでは全然解説されてないから これはわかりっこないですな
WINアプリの設定ウィンドウ、たとえばHSPスクリプトエディタのツール→オプション を選んで表示されるウィンドウに、角が丸まった四角形に青文字が添えられてる 囲み部分があるじゃないですか。 頻繁に使われてるので、あれってまとめて描画できるような命令があるんでしょうか。 ググってみると単体の角丸四角形は一つの命令では表示できないみたいですが。
別に一つの命令じゃなくても、モジュールが公開されていたらそちらをお願いします。
XPスタイルだと角が丸まるのか
>>381 うほっいい教材
HSPのサンプルやそのページのchkboxを利用した例は
最小化→復元で背景が透けてしまうんで使えませんね。
圧縮ファイル内のモジュールを流用することにしました。
>>374 もうちょい詳しく教えてもらえんですか。
アプリにする=exeファイル一つになる、って考えてる時点で駄目?
画像は画像として独立して存在してるなら、そこの画像を勝手に入れ替えて
もらえばそれでいけるであろう事はわかるんだけど。。。
そもそもpicloadとかフォルダを指定しなければ exeファイルと同じフォルダの画像が読み込まれるだろう?
>>385 おーほんとだ。パックしたファイルよりフォルダにおいた画像とかが優先されるのね。
じゃー同梱のreadmeに画像差し替えたきゃ●●って名前の●●×●●サイズの画像
をフォルダにいれてちょ、でいいんだなぁ。センクスー
しかしその画像をexeと同じフォルダにいれとかないと、
ちゃんとパックしたはずの画像を表示する段階でエラーが発生するのは何でだろう・・・
それってファイル名が長いとか漢字使っているとかじゃないかな?
>>387 さすがに半角ローマ字しか使ってないけど、長いっちゃ長いかも・・・。10文字。(拡張子含まず
10文字のがなんとか大丈夫になったと思ったら15文字のでもうどうしようもなく。
ためしに短くしてみたら大丈夫になった、ありがとん!
具体的に何文字まで、とか決まってないのかな?環境や状況依存で変わるなら
無理矢理にでも全部やたら短い名前にしないと駄目って事になるよね・・・
>>388 たしか拡張子無しで8文字だったかな?
ファイル名収納用のヘッダがそのぐらいまでしか確保されていない
390 :
389 :2008/01/05(土) 22:09:09
訂正 拡張子込み(ドットも)で15文字だ 16文字分入ることは入るけど内部では認識できないみたい たぶん、16文字分読んで最後にNULL文字詰めてるのかも?
391 :
389 :2008/01/05(土) 22:24:51
うーん、docs/hspprog.htm に書いてある内容が間違っている気がする 「PACKFILEと暗号化」の項に > ファイル名は、拡張子も含めて19文字までが識別対象になります と書いてあるが15文字までしか認識できない
392 :
デフォルトの名無しさん :2008/01/05(土) 23:50:39
自力で透過処理をしたいんだけど誰かサンプルありませんか? psetで絵を描いてそれを落ちるようにしたいんだけど
393 :
訳 :2008/01/05(土) 23:53:00
サンプルを見せろや ソレを自力ということにすっから
>>389 詳しくありがとう。ファイル名収納用って事はやはり画像以外もか。
とりあえず全部11字以内に収まるようにするよー
395 :
394 :2008/01/06(日) 00:52:51
もしや変数名やラベル名にも文字数制限あったりするのかな?なんか不安になってきた。
話は変わって、
>>386 の>パックしたファイルよりフォルダにおいた画像とかが優先されるのね
に誰もつっこんでくれなかったけど、これは文字数との兼ね合いで結果としてこうなっただけで
パックファイルの中身が優先されちゃうじゃないか(´・ω・`)
これだと画像はパックせずにバラで配布せんと差し替えできないという事に・・・。
アプリ内での設定となると、
1:パック内よりフォルダ内を優先して読み込めーって命令とか
2:アプリ内でのコンフィグ的操作から、スクリプトを書き換える命令で
●●.jpgの部分を▲▲.jpgに書き換えつつ「▲▲.jpg」ってファイルをフォルダにおいてね、と注釈いれる
とか・・・そんな命令、もしくは他の方法はあるですかいな
参照画像名をレジストリかINIにでも書いておけばええやん
一行が長すぎてソースが汚くなるから改行したいときに、 前の行から続けて書くための記述方法ってあります?
>>395 > もしや変数名やラベル名にも文字数制限あったりするのかな?なんか不安になってきた。
あるよ。
変数・ユーザ定義命令・ラベル:59バイト
マクロ:20バイト
モジュール名:18バイト
1、2バイトの余裕はあるみたいだけど、マニュアルにはこう書いてある。
> 話は変わって、
>
>>386 の>パックしたファイルよりフォルダにおいた画像とかが優先されるのね
> に誰もつっこんでくれなかったけど、これは文字数との兼ね合いで結果としてこうなっただけで
> パックファイルの中身が優先されちゃうじゃないか(´・ω・`)
> これだと画像はパックせずにバラで配布せんと差し替えできないという事に・・・。
確かにパックするファイル名の文字数が適正であればパックしたファイル優先になるね。
対処法としては、通常のフルパスで参照すればパックしたファイルは対象にならないようだから、
フルパス(起動ディレクトリのパス+ファイル名など)のファイルが存在しなければファイル名のみ
で読み込むとかするのはどう?
起動ディレクトリのパスはdir_curに入ってる(起動時に変更されてなければ)。実行ファイルでの
実行時ならdir_exeでもOK。スクリプトからの実行時はdir_exeにはhsp3.exeなどのパスが入る。
399 :
398 :2008/01/06(日) 09:36:02
>>398 > スクリプトからの実行時はdir_exeにはhsp3.exeなどのパスが入る。
hsp3.exeがあるフォルダのパスってことね。連投すまん。
400 :
394 :2008/01/06(日) 20:27:16
>>396 俺の知識では、この場合にレジストリだとかiniだとかいう言葉が具体的に何を指して
どう書く事で、どういう意味があるのかが全部わからんとですよ(´・ω・`)
>>398 >対処法としては、通常のフルパスで参照すればパックしたファイルは対象にならないようだから
ここの解釈が微妙だったんで試してみたんだけども、あくまで「対象」であって「優先」じゃないよね?
これが「優先」ならこれで良かったんだけど、フルパスで指定すると
指定された場所に指定の名前の画像がないとエラー。
ここでまた問題が発生・・・実行ファイルにしてからだと、dir_curでもdir_exeでもどっちでも
ちゃんとフォルダに指定の名前の画像ファイルを置いておいてもエラー。
エディタからF5で実行すると全く同じスクリプトでエラーなく動くのに。意味がわかんねぇ・・・
それと、上記の通り、フルパスでも別に「優先」でないのなら、別にフルパスでなくても
違う名前で指定しておいて(ex:A1.jpgとA2.jpg)、A1を読み込んで、ファイルが存在しなければ
A2(こちらだけパックしておく)でいいような・・・?
さらに、これの場合もフルパスの場合も、「ファイルが存在しなければ」の部分をエラー出さずに
ちゃんと判定させる手段が思い浮かばない・・・
疑問ばっかで長々とすんまそ・・・
401 :
394 :2008/01/06(日) 21:00:33
>>400 の>ここでまた問題〜以下3行のよくわからんエラーは解決しました('A`)
全然関係ないところだった。連投でつまらんことですんません
exist命令でファイルの有無はチェックできるぞ。
403 :
デフォルトの名無しさん :2008/01/06(日) 23:29:08
ひまだねぇ
そうですねぇ
405 :
デフォルトの名無しさん :2008/01/07(月) 00:02:09
あらやだ。
えー、失礼しました。 ロードした後にdim使っちゃいけませんよねアヒャヒャ…… 自己解決ぅorz
ひさしぶりに自己解決ッ!!!
409 :
デフォルトの名無しさん :2008/01/07(月) 23:14:36
じゃ、自己解決ゥ!
hspda使ってみようと思ったんだけど、vsaveもvloadも命令として認識しない。 (エディタで水色にならず、実行したらエラー) dllは本体と同じとこにあるし、asはスクリプトと同じフォルダ、#includeもある。 これ以上何をどうすればいいのか、マニュアルにのってないよ(´・ω・`)
411 :
400 :2008/01/08(火) 01:46:12
>>402 おーこんなのあったのか。これでうまいこといきそうだ、ありがとん!
>>410 #include "hspda.as"
a="hoge"
vload a
普通はこれだけでもエラーはでないんだがなあ
413 :
デフォルトの名無しさん :2008/01/08(火) 11:09:20
HSPを少しさわりだしてHSPTVブラウザってので どんなのをみなさんは作ってるのかと思い適当に クリックしたらウィンドウじゃなく全画面表示になって 終了さそうにもEscは効かねーわその他のキーも 効かねーわでタスクマネージャーで無理矢理 終了させた。 それにしても、どっか良い講座サイトないかね〜 最初、型は?初期化は?ってとまどった。
414 :
410 :2008/01/08(火) 11:15:56
>>412 どこもいじってないのに(;消しただけ)今日はいけたよ・・・なんだったんだろ。
しかしこれ、エディタで水色にならんのは仕様って事でいいのかな?
415 :
410 :2008/01/08(火) 11:19:52
>>415 ありがとう!!
少しだけページ見てみました。
一応自分はC言語の知識はあってwin32apiを猫程度かじってて
C++,JAVAを初心者レベルで知識はあってC#をほんの少し
さわったレベルのプログラミングの経験がある野郎です。
ですので講座をちゃっちゃと流し読みしてTipsを読み終えたら
HSP付属のHELPむさぼることにしますわ
ファイルを開くダイアログが出てくるのを監視して 出てきたらファイル名をHSPから送りたいんですが aplkeyとかaplkeyd+aplkeyuとかでも反応ないんですが どうすればいいですか?
418 :
417 :2008/01/09(水) 02:52:28
自己解決しました。 スレ汚しすいませんでした。
419 :
デフォルトの名無しさん :2008/01/09(水) 08:49:09
420 :
デフォルトの名無しさん :2008/01/09(水) 23:13:14
ジン! ジン! 自己解決ゥ〜♪
拡張プラグインありでexeを作って配布する場合、プラグイン本体(dll)をコピーして exeとかreadmeとか同じフォルダにいれておけばOK? exeにした後、自分のPCでも問題なく動くのは、HSPの本体と同じフォルダにdllがあるからで 配布する場合はプラグインも添付しとかないと駄目・・・だよね?
>>421 > exeにした後、自分のPCでも問題なく動くのは、HSPの本体と同じフォルダにdllがあるからで
exeと同じフォルダ(かシステムフォルダ)にないと動かないはずだが。
> 配布する場合はプラグインも添付しとかないと駄目・・・だよね?
Yes。
通販さん@賛成です
>>421 DLLの再配布条件をDLLのReadmeで確認しとくことをお薦めするよ。
ftpgetやftpputしたあとに、netmode命令で状態見てみたけど、 ftp待機状態ってなんだこりゃ。 HSPでオンライン通信なんて考えない方がいいんでしょうか。 教えて偉い人。
よくrepeatloopの間にgoto挟んであるのを見るけど、これってネスト云々で エラー起きる元だよね? なんでbreakと変数代入とか、エラーの起きない方法で示さないんだろう? 暗黙の了解で、手法を示す時はgoto使うけど、このスクリプト 使うならちゃんと自分でエラー起きないように書き換えろよ!みたいなのが あるのかな?
428 :
デフォルトの名無しさん :2008/01/14(月) 18:37:42
>>427 breakは嫌い
ループ構文によって使えたり使えなかったりでうっとおしいから
ていうかHSPの各種ループ命令の統一感の無さは異常
>>427 >よくrepeatloopの間にgoto挟んであるのを見るけど
俺は見たことないよ
C++では多重ループから抜けるときとかエラー処理に飛ばすときとかに使う HSPではやっちゃいけないのは知ってるがついやっちゃうなあ
>>428 breakよりオススメの方法を教えてほすぃ
>>429 そう言われて初めて気づいた。どこかで見たか何かでそれが普通だと
俺が思い込んでただけで、よく見るって程溢れてはないっぽいね・・・
>>430 やっちゃってたZE
mmload でmp3形式のファイルの音声が再生されません・・・ wav形式は正常に鳴るんですが、プラグインを入れないと再生できないのでしょうか?
mmloadじゃ再生できないだろ
434 :
デフォルトの名無しさん :2008/01/15(火) 23:48:29
「直してくれ」ってスゲェな!
失礼します。 パッドを三つほど繋いで使いたいのですが、 良い方法はありませんかね。 二つ使えるDLLならよくあります。 三人目はキーボードやマウスを使えます。 しかし四人目となると、どうにも……
変数に上限設定って出来る? 例えばHPを999より高くならないようにする、みたいな。
>>436 #module ;HPの上限規定
#deffunc hplimit int char_no
#const CHARHP 1
#const HPMIN 0
#const HPMAX 999
status(char_no,CHARHP)=limit(status(char_no,CHARHP),HPMIN,HPMAX)
return
#global
もちろん、このままじゃ動作しない。
C++とかならクラスがあるのに…くやしい!!
>>435 H2_STICKなら複数認識された希ガス
440 :
デフォルトの名無しさん :2008/01/17(木) 19:12:12
いよいよ、HSP3.2βがフルオープンソースで公開された訳だが みんな、興味ないん??
「最新!HSP3.1〜〜」と書いてある本を今読んでた俺涙目
>>440 構文ががらっと変わらない限り興味は無い
443 :
デフォルトの名無しさん :2008/01/18(金) 00:44:35
B・S・D! B・S・D!
>>440 簡便で実用的なツールであれば問題ない
仮にC++のような複雑怪奇な実装になっていれば、
今作ってるのが完成した時点でDに移るよ
教えて下さいませ。 HSP3.1のscrenn命令で作成したウィンドウにスクロールバーを出させるには、どうしたら良いのでしょうか? 秀和システムから出版されている入門書のコマンド一覧には「クライアントサイズが初期化サイズよりも 小さい場合にはスクロールバーが付加されます」とあるのですが、うまく出来ませんでした。 具体的には、 screen 1,800,800,,,,300,300 repeat mes cnt if cnt=100 : goto *step2 loop *step2 stop とした時にスクロールバーが出現せず、ウィンドウサイズを超えた表示内容を見ることが出来ません。
すみません、間違えました。 1行目はscrennではなくscreenでした。
>>447 私は
>>427 氏ではありませんが、ループの中にgotoを入れるのはスマートではないのですね。
すぐ前の書き込みなのに見逃していて恥ずかしい限りですが、勉強になりました。
できましたら、スクロールバーについても是非教えて下さい。。
俺が427だぜ!結局今も変数とブレイクでやってるという・・・
>448 マクロのforとかwhileとか使えばいいじゃん。 あれならgoto使おうが全く問題ないし。
今ゲームつくってて、メッセージは全部同じウインドウに表示させるんだけど、 起点をposで定めて普通にmesで表示すると、文字数が多い場合ウインドウから はみ出たり、最悪右端は表示されない。 自動折り返し用の命令みたいなのある? それともいちいち文字数を数えて主導でpos指定しなおすしかない?
HSP 2.6時代はよくやってたけど3.0以降になってから手が付かない。 そんな変わらないけれどもw ところで、HSPで言語設定を判定する事出来ますか?
iconvを呼び出す
>>452 よくわからんなりなんとか思ったとおりにできた。ありがとん
456 :
デフォルトの名無しさん :2008/01/24(木) 12:15:23
様、様、呼ばれて。w あの程度でさ〜 いい気になんなよ
知らんがな
HSPで作った実行ファイルを、ウィルスだと誤認識する問題は解決されたのだろうか? ソースネクストの「ウィルスセキュリティ」は修正されているようだけど…。
>>458 avastだと問題ないけど
誤認識するアンチウィルスソフトはいったい何だい?
ウイルスバスターもいまだに駄目じゃない? 俺のは2006だけど。
ウイルスバスターは本当におせっかいだからな。 XPのキージェネもはじく品。
画像を半透明に表示させる方法ってある? 背景の上にボックスを半透明で表示して、その上に文字を出したいんだけど。 HTMLのstyle="filter:Alpha(opacity=50)"みたいな。
zip圧縮されたファイルの解凍後ファイルのヘッダの先頭20hに相当する部分だけが欲しいんですが unzipで一度解凍する以外になにか上手い手はないですか?
解凍する他ないかと
>>463 ある。ジーコピーとジーモードを勉強しる!
467 :
デフォルトの名無しさん :2008/01/29(火) 23:14:17
468 :
デフォルトの名無しさん :2008/01/30(水) 00:28:20
>>467 HSPが普通なインデントが使えることをはじめて知ったよ。
いつのバージョンから可能になったの?
470 :
デフォルトの名無しさん :2008/01/31(木) 21:58:58
そいつらが四天王な訳w? そいつらゴトキが?
>470 所詮HSPなんてそんなもんだよ
ほほう… なかなか、知ってんのう!
473 :
デフォルトの名無しさん :2008/02/01(金) 23:39:10
質問です。 同一ウィンドに複数のオブジェクト(ボタンと入力ボックスを6つずつ等)を配置して 特定のオブジェクト(入力ボックスのみ等)にだけ、Tabキーでのカーソル移動が 有効になるようにしたいのですが、可能でしょうか? もし、可能でしたらヒントを下さい。
質問です。 変数を特定の位置で印刷したいのですが、可能でしょうか? また、それらを勉強するのに最適な書籍かHPを教えてください。 なぜかテンプレのURLが「HTTP エラー 403 - アクセス不可」でした。
>>473 です。
getkey 命令と、objsel 命令を使った力業で、自己解決しました。
476 :
デフォルトの名無しさん :2008/02/02(土) 22:27:12
サーバプログラムを作ろうとしてるんですが どうしてもセッションをひとつしか持てません。 listenソケットを作成し、接続を受け付けて 通信ソケットを取得することができますが その状態でさらに別の接続を受け付けても 取り出すことができません。 どうしたらよいのでしょうか
つpcbnet2
画像を読み込んで、WINDOWS付属のペイントの下部にあるような パレットリストみたいなものを配置したいんですが、 クリック時にマウスの座標を判別してイベントを起こす他に、 どんなオブジェクトを作成すればパレット選択から処理に飛べるでしょうか。(シングルクリックだけでいいので) 標準ボタンなんかは色を変えられないようです
>>478 pget で色情報を取得して、やりたい処理をすればいいのでは?
本家に書き込んでいるaは誰だか知らんが神だな
>>479 >クリック時にマウスの座標を判別してイベントを起こす他に、
482 :
あみぢ厨 :2008/02/03(日) 15:25:56
3Dやりてーなー、ちくしょう。 しっかし作業出来るのは、良くても日曜日ぐらいで 文字通り日曜プログラマになってしまた。 あーマジ学生時代に戻りたいぜぃ。 向う1年ぐらいは2Dゲーのプロジェクトで埋まってる。 というワケで、やるとしたら1年後だけど、 そんな僕にHSP導入は、アリですかね? 自分で調べろウンコですか、そうですか。すみません。
483 :
478 :2008/02/03(日) 18:11:47
バッファに塗りつぶした正方形を描画して、 画像ボタンへスタイル変更したボタンに画像データとして関連付けようとしたんですが イメージのハンドルってどうやって取得するんでしょうか。 mrefの66で取得した変数をポインタとして渡すんじゃ駄目でした。 LoadImageAでハンドルを取得する場合はメモリから読み込めませんし。
CreateBitmapしてDC挟んでボタンに貼り付け…かな
485 :
デフォルトの名無しさん :2008/02/03(日) 20:09:59
いやぁ〜〜 最近、サンプル製造機が増えて来て 助かってまちゅ〜〜w
486 :
478 :2008/02/03(日) 23:52:30
できました。ビットマップオブジェクトを作成するってことだったんですね。 プログラム終了時にDeleteObjectするのは当然ですが ボタンに新しい画像を結びつける時には以前の画像を消さないとまずいですかね Javaとかなら勝手に処理してくれそうですが
clrobjの引数2を省略すると1以降全部消える数値が代入されるって 随分大胆な仕様じゃない
どうしても半角カナを表示させたい(mesで)んだけども、文字化けさせずに使えないかな? 自分の環境ではエディタからやってもexeにした後に実行しても大丈夫なんだけど どうも環境が違うと化ける場合もあるみたいで。
半角カタカナ自体が環境依存文字という事実
ウィンドウにあるリスト内でのクリックの検出ってどうやんの?
>>466 遅くなったけどありがとう。ちゃんとできたー。
>486 基本的にAPIでは作成・開放は自分で管理せんとならん。 HSPはクラスも使えんからきちんとやるべき。
はじめまして。現在MCI使った動画プレーヤー作っていますが、 ウィンドウサイズ位置、動画のサイズを変更することなく、 カーソルがウィンドウ上にある時だけシークバー表示を実現したいです。 BGSCRでそれっぽい事が出来そうですがどうしてもタイトルバーが表示されてしまいます。 構成としては、 ID0の初期ディスプレイは非表示にし、 ID2のタイトルバーの無い画面(bgscrで作成)をメイン画面に、 ID3をシークバーとしてBGSCRで表示させようとしてます。 この場合タイトルバーが2つ表示されてしまいます。 MCI再生の動画上に直接描写するなど他にも方法があればご教授頂ければ幸いです。
>>494 「タイトルバー」を、別の何かと勘違いしてないか?
ま、一番下のヤツでやるのがいいんじゃない?常考。
あと、「教授」じゃなくて「教示」が正しいようだぞw
>>494 #include "user32.as"
bgscr 2,,,2 //非表示で
GetWindowLong hwnd,-20
SetWindowLong hwnd,-20,stat|$80
gsel 2,1
こういうことか…?
>496 たぶんタスクバーに表示される奴の事を言ってるんじゃないのか? #include "user32.as" winx=ginfo_sx winy=ginfo_sy bgscr 2,,,2 boxf hwnd2=hwnd gsel 0 SetParent hwnd2, hwnd gsel 2,1 width winx,32,0,winy-32 こんな感じじゃねぇ?
>498 おっと、 GetWindowLong hwnd2, -16 SetWindowLong hwnd2, -16, stat & (0xFFFFFFFF ^ 0x80000000) | 0x40000000 を忘れていた。
すみません訂正します。タスクバーが2つ表示されるのを防ぎたいなと。 また、ID2はタイトルバー表示させずタスクバーは表示させ、 ID3をタイトルバーもタスクバーも両方表示させないようにしたいです。 これも情報が間違っていて申し訳ありませんでした。 サンプル試してみましたが、自分のスクリプトの中に #uselib "user32" というのが含まれているせいかfatal errorになります。 右クリックメニュー追加のためサンプルを改造しただけなので中身は理解してません…。 もしよろしければincludeを使わない形のご教示頂ければ幸いです。
>>496 ,498を試そうともせず書き替えろとは虫の良い。
オマエのスクリプトの都合など知らん。
「右クリックメニュー追加のサンプル」とやらを
#include "user32.as"に合わせるのが筋。
>>500 を見てサンプル試してないと受け取れる感性は凄いと思うよ。
503 :
デフォルトの名無しさん :2008/02/06(水) 14:01:56
質問です。 repeat getkey key,65 wait 1 loop みたいなスクリプトを書くと、aのキーが押されてる間中ずっとkeyに1が入りますよね? これを押された瞬間のみkeyに1を入れて、その次のループ以降では0を入れたいのですが、どうすれば良いのでしょうか。 もちろん、2度目、3度目と押されたらその時もkeyに1が入るようにしたいです。 stickだと簡単に出来るのですが、getkeyだと調べてもなかなか方法が分からないです・・・ どうかご教授お願いします。
>>501 試してみてダメだったと書いてあるのに随分ひどいレスだな。
酔った勢いで書くのはやめましょう。
>>503 変数が1になったら必要な処理して、変数が0になるまで別のループ処理するとか?
>>503 getkeyは使ってないけど目的は達成出来そうなコード
#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
oncmd gosub *check,WM_KEYDOWN
oncmd gosub *check2,WM_KEYUP
repeat
await 1
loop
stop
*check
switch wparam
case 65
switch lparam
case 1966081
mes "[a]が押された"
swbreak
swend
swbreak
swend
return
*check2
switch wparam
case 65
mes "[a]が離された"
swbreak
swend
return
>>500 そこまで切り分け済んでるならHSP タスクバー 非表示で検索すりゃ自己解決ですぜ。
俺もMCIで質問したいんですが、
FLVをメディアプレーヤーで再生できるようにした後
HSPからも拡張子を一時的に変える事なく再生する方法はありますか?
win.iniにそれらしいのがあったのでFLVをMPEGVIDEOとして手入力するもNG。
えっちな人教えて!
color 255,0,0 : mes "あいう" color 0,0,0 : mes "えお" というプログラムを書くと自動的に改行されてしまいます。 posを使えば出来ないこともないですが、改行せずにちゃんと書くにはどうすれば良いんでしょうか?
>>503 stick を使えよ。その為に生まれた命令なんだから…
あと、「教授」じゃなくて「教示」が正しいようだぞw
>>507 pos を使うしかない。
x=0 : y=0
pos x,y : color 0,0,0 : mes "あいうえお"
pos x,y : color 255,0,0 : mes "あいう"
>>508 stickってエンターとかスペースとか矢印キーぐらいしか取得できないんじゃなかった?
>>508 やはりそのように上書き(?)して書くしかないのですね。
ありがとうございました。
HSPは初なんだが、なんでサンプルデモのBGMがバカみたいに糞でかいの? ちょっと大きめ程度の音量設定だったのにいきなり大音量で心臓止まるかと思ったよ。
>500 >#uselib "user32" を使ってるのになぜ、理解出来んのだ? もし、何処かにで拾ってきたソースをそのままパクって 組み込んだだけというのなら、お前がどんなソースを書いてるのか 分からん限り教えようがねーだろ!
>503 んなもん簡単だろ。 keyの値をコピーする変数をひとつ用意して、 その値と、keyの値を比較して keyが1、もうひとつが0となった時にのみ 検出するようにすれば良いじゃん。
変数名に変数を使うにはどうすればいいのですか?
exeファイルを生成し、実行してみたのですが、ウィンドウ名が空白になります 何かしらコマンドがあると思うのですが、探しても見つかりませんでした どうかご教授願います
つキーワード検索 つ"タイトル"
>516 dim 変数
522 :
517 :2008/02/06(水) 23:46:58
なんかアホな質問しちゃったみたいですね 皆さんありがとうございました
>>522 それじゃ、幕引きは出来ないぜ!
ちゃんと、自己解決ゥ!と叫びなさいw
524 :
500 :2008/02/07(木) 01:09:09
迷惑かけすみません、単純にタスクバーにタイトルバーを表示させずにウィンドウの追加をする方法はありますか?
HSP付属のガイドに #define 新規名称 元名称 [新規名称を登録する] 新しい別名(エイリアス)を追加するためのものです。 HSPの従来ある命令の名前を、別な名前でも使用できるようになります。新規名称は、予約されている命令語や変数名と重ならない20文字以内の、スペースを含まない英文字列でなければなりません。 とあるけど、別に英文字じゃなくて使えるよね? 英文字じゃないと場合によってエラーが起きたりするのかな?
mes aaa+":"+bbb みたいに書くとちゃんと表示されず、 mes ""+aaa+":"+bbb みたいに書くとちゃんとできるんだが仕様?
変数の宣言はちゃんとしろやゴラァ っていうHSPの中の人からの愚痴です。
instrで"["とか"]"は検索できないんでしょうか。全然感知してくれません。
>>527 変数の宣言って?
一応、
aaa = "あいうえお"
bbb = 777
みたいにはしてるよ。
>>529 文字列型と数値型を混ぜる時はどっちに合わせるか指定しろって事
数値に合わせるなら
mes aaa+":"+bbbなら":"も数値として扱われるし
文字列にしたいならmes str(aaa)+":"+str(bbb)としろ、と。
最初に来るaaaが文字列型なら文字列に合わせて丸められるし
数値型なら全て数値型に丸められる
aaa="あいうえお":bbb=777
mes aaa+":"+bbb
なら、あいうえお:777と表示されるし
mes bbb+":"+aaaなら777と表示される
型を混ぜる時はどっちかに決めろって事。
>>531 文字列にしたいならmes str(aaa)+":"+str(bbb)としろ、と。
自分はそういう時、mes ""+aaa+":"+bbb にしてるけど、これでも問題ない?
>>533 aaa、bbbの型を間違えて嵌らなければ別にいいんじゃね?
俺は頭弱いからそういう使い方はしないけど
HSPって、 if a==b { 処理1 } else if a==c { 処理2 } else {処理3} みたいな制御構文は用意されてないの? if a==b { 処理1 } else { if a==c { 処理2 } else { 処理3 } } って記述しなきゃダメだったりする?
switch a case b 処理1 swbreak case c 処理2 swbreak case default 処理3 swbreak swend こう?
>>536 switch文もあるのか。
でも、a<b とか指定したり
if a==b {} : else if c=d {}
みたいなことやったりは出来ないよね?
どうしてもHSPで、って事なら 事前に数値を加工してswitchで振り分け とかになるんじゃないかな 今の所、自分がそういう必要のある場面に出くわさないから良くわかんないや
>>507 モジュール使えば?
#module
#deffunc nobr str msg
p = ginfo_cx, ginfo_cy
mes msg
pos p(0)+ginfo_mesx, p(1)
return
#global
repeat 5
nobr str(cnt)
loop
stop
>>537 if a==b { mes "a==b" } else : if a<b { mes "a<b" } else { mes "a>b" }
書いた後に気づいたけど case defaultっておかしいよな 誰も突っ込まないけど
そういや、HSPのswitchは switch i default swbreak case 1 swbreak case 3 swbreak; case 5 swbreak; swend こういう書き方すると、全く機能しないんだよな。 全部defaultになるというw
>524 既に答えが出てるだろ。あれ以上簡単にならねーよ。
>>535 #define elseif else:if
これで
if 条件1{
}elseif 条件2{
}elseif 条件3{
}
って書き方が出来るってどこかで聞いたぞ
>544 まだそんな仕様なんだな。HSPは。
なんでデフォルトでelse ifが用意されてないんだろ。 他の言語ならどれもあるのにね
>500
ふと思ったが、お前が使ったサンプルというのは、
commonフォルダに入ってる「mod_menu.as」の事か?
だったら、その中の
#uselib "user32.dll"
#func global CreateMenu "CreateMenu"
#func global CreatePopupMenu "CreatePopupMenu"
#func global AppendMenu "AppendMenuA" int, int, int, str
#func global SetMenu "SetMenu" int, int
#func global DrawMenuBar "DrawMenuBar" int
#func global PostMessage "PostMessageA" int, int, sptr, sptr
を消せば、
>>496 ,498,506が使えるんじゃねーの?
>>545-546 elseif (VBとか)
else if (Cとか)
else:if (HSP)
どれも違わないと思うのは俺だけか
549 :
デフォルトの名無しさん :2008/02/08(金) 18:30:06
>>548 else:if
endif
endif
HSPしらないけどこうなっちゃわない?
HSPにはendifが無い件 プリプロセッサ命令ならあるけど。
>>549 いんや、普通にこう書けるんよ (HSP3な)
if A {
aaa
} else:if B {
bbb
} else:if C {
ccc
} else:if D {
ddd
}
俺は一応、ケミ9カルとか、電磁方程式とかわかっているからOK
/* main.hsp */ gosub *draw stop *draw mes "test" return 上記のようなプログラムで、関数を別ファイルに移したいのですが、 main.hspにはどう記述すればいいですか? #include でdraw.hspを読み込ませると、いきなり*drawを実行してしまいます。 /* draw.hsp */ *draw mes "test" return
>>553 gosubで飛ばせるなら#includeをmain.hspのケツに突っ込めばモウマンタイ
*drawの前にstop入れとくとmainから隔離出来てグー
先頭に#include入れたければ#deffunc使うとグー
>>554 どうも、おしりに入れるやり方が一番早くていい感じです
ありがとうございましたm(_ _)m
556 :
デフォルトの名無しさん :2008/02/08(金) 19:17:59
Temporary Internet Filesに入っているjpgファイルの一覧を表示したいのですが sdim list, 256 chdir "C:\\Documents and Settings\\user\\Local Settings\\Temporary Internet Files" dirlist list,"*.jpg",0 font "", 10 mes list とやると何も表示されません jpgを*にするとContent.IE5、desktop.ini、temp.dmfの3つしか表示されずうまくいきません 何が原因なんでしょうか またフォルダ内のデータを他のフォルダに移動させるにはどうしたらいいでしょうか
if a==b : 処理 else : 処理 とやるとエラーになるのですが仕様ですか?
558 :
デフォルトの名無しさん :2008/02/08(金) 19:36:01
getkey命令で、ハイフンを取得したいのですが値はいくつに設定すればいいのでしょうか。 調べてもなぜか出てこないので質問しました。
559 :
デフォルトの名無しさん :2008/02/08(金) 19:37:11
561 :
デフォルトの名無しさん :2008/02/08(金) 19:40:13 BE:225769853-2BP(111)
>>558 #define WM_KEYDOWN 0x0100
oncmd gosub *check,WM_KEYDOWN
repeat
await 1
loop
stop
*check
mes str(wparam)+"が押された"
return
↑のスクリプトで好きなキーを押せば対応するキーコードが出ます。
テンキーのハイフンは109、メインキーのハイフンは189です。
563 :
デフォルトの名無しさん :2008/02/08(金) 19:53:42
>>561 書いてあるサイトもあるのですね。
失礼しました。
>>562 そのようなスクリプトも作れるのですね。
これから使わせて頂きます。
初心者な質問にわざわざ答えてくださってありがとうございました。
スクロールバーが表示されるタイミングでスクロールバーの分だけ ウィンドウのサイズを横、又は縦に広げる。 スクリーン初期化時に決めたサイズ以上には大きく出来ないので 大きめのサイズで初期化してwidth命令で小さくしておくとイイかな。
左ドラッグでウィンドウ移動できるようにした時、 ウィンドウへのファイルのドラッグ&ドロップした時ウィンドウが移動してしまうのは回避不可? もちろん処理はウィンドウがアクティブの時に限定してるけど、 ファイルをドラッグしてる間ってアクティブ解除されないし…
>>566 どういう方法で左ドラッグでウィンドウ移動できるようにしたんだ?
フツーに組めばそういうことにはならない気がするが。
#include "user32.as"
#include "shell32.as"
onclick gosub *a
DragAcceptFiles hwnd, 1
stop
*a
ReleaseCapture
sendmsg hwnd, 0xA1, 0x02, 0
return
>>567 ありがと!getkey判定でscreen命令をループさせてたよ。
動くようになったけど、たまにドラッグ離してるのに移動続いたりする。
もう少し様子見ます。
#includeってどこでも.asが拡張子のファイルを対象にしてるけどなんで? 別にあえてasにしなくてもいいよね?.hspでも.txtでも。 #include命令使いたい(今まで一つのファイルで全部やってた・・・)んだけど 普通につくった.hspのファイルを拡張子だけ勝手に.asに変えてから使った方がいいのかな?
ソースの#includeを書いた場所にファイルを差し込むだけなので 別にasだろうがhspだろうがtxtだろうが好きに汁
.asは"HSP header"って位置づけ
oncmdってウィンドウごとに指定するのに oncmd 0で全ウィンドウの割り込みが停止するのはバグですかね?
スクリプトエディタ上のフォントカラーの話なんだが、 たとえばemesみたいな、インクルードして始めて使えるような命令を、 標準命令と同じように変色させることはできるのか?
>>574 今のところ無理。エディタの設定ダイアログを開いてみそ。
そうか、色変えは無理か 少し残念だが、他言語ではこれが普通なんだよな……早急な解答dクス
HSPでUTF-16を扱いたい時で 外部DLLやllmodを使わずに処理する場合に参考になるサイトとか無い?
HSPでmixiいじったことある人居ませんか? perlを使ってるせいで全然上手くいかない・・・
HSPで作ったソフトで、メインループ内でredrawをしない場合 作ったソフトの上で別のウィンドウを動かすと白い部分が残ってしまいます。 redrawをループ内で回せばいいんですが、ループで何かが起きてるのか 何故か同時に起動している別のソフトのフレームレートが落ちてしまいます。 redrawを止めると元に戻ります。 タイマー使って定期的にredrawする以外に ウィンドウの描画時にコレを使うと勝手に書き換えるよ みたいなのってないですか? ウィンドウ自体は普通に初期化してsyscolorで塗りつぶし 各種オブジェクトをHSPから設置しているだけです。
>>579 残念。
もう少し日本語を上手く使えたのなら…。
>>579 勘だけど、PAINTメッセージがらみでそんなことがあったような。
タスクバーに表示されるタイトルバーの内容が更新されても、 マウスでクリックしないとなかなか反映されないのですがXPの仕様?
>>582 Title "test1"
await 5000
mes "test2"
Title "Test2"
即時反映されますけど。
こういう事じゃないのかな?
>>579 ループにwait入れてるか?
waitを大きく取るかWM_PAINT掴まえてそこでredrawしてみるしかないなぁ。
つか常に再描画するんなら重くなって然りだ。
”ループで何かが起きてるのか”もわからんで解決などありえん。
ゲーム作ってんなら「他のソフトのことなど知るか」と割り切れ。
ツールなら物にも依るが、なるべくループ使うな。
>>584 >WM_PAINT掴まえて
あぁ、なるほど。
こういう事も出来るのか。
参考になりました。dクス。
>>WM_PAINT掴まえて >あぁ、なるほど。 あんな質問しててこれがで理解したのか!?w
>>586 不思議だったのは
redrawが入ってるループだと何故か他のアプリに影響が出て、外すと影響が消える。
影響だけを考えると無い方がいいんだろうけど
そうするとウゥンドウの表示が乱れて気分的によろしくない。
ので、何か他の手段を、という事だったんで
メッセージ掴まえてredrawさせれば?という
解決への道筋を教えてもらえたので大変参考になった、と。
メインループでredrawを回さない分、意味不明なアプリへの影響も
原理的には無いわけで、これでダメなら他の部分が悪さしてるんだな、と。
メッセージ掴まえてredrawさせれば果たして上手くいくかは別問題ですが。
ちなみに、メインループでredrawさせても使用率は0%-1%で変化ナシ。
そこら辺の『wait入れてないんじゃね?』なレベルでは無いです。
dim key dim a repeat stick key,1+2+4+8 if key&1 and a=0 : end if key&2 and a=0 : end wait 5 loop ←を押せば終了するのに↑押しても終了されないのは何故ですか?
>>588 (key&2)が1(真)にならないから
dim key
dim a
repeat
stick key,1+2+4+8
if key&1 and a=0 : end
if (key&2)
>>1 and a=0 : end
wait 5
loop
こうかけば1になるから↑押しても終了するようになる。
でも面倒だから普通は↓こう書くか別変数使ってスイッチで分けない?
dim key
dim a
repeat
stick key,1+2+4+8
if a=0 {
if (key&1) :pos 0,0:mes "←"
if (key&2) :pos 0,0:mes "↑"
if (key&4) :pos 0,0:mes "→"
if (key&8) :pos 0,0:mes "↓"
}
await 5
cls
loop
590 :
588 :2008/02/14(木) 00:46:49
>>589 レスありがとうございます
↓の書き方にしてみます
まだ分からないところがあるんですが
and a=0をつけるとkey&2が真にならないのは何故なんでしょうか?
それと、(key&2)
>>1 という書き方を知らないんですが
>>1 ってどういう意味なんでしょうか?
>>590 if文の基本は、ifに続く条件が真か偽かになります。a=0はaが0なら真、それ以外なら偽になります。
また、HSPや他の言語でもそうですが、真=1 偽=0として扱われます。
これを踏まえて、最初の条件を見ると、[ Key&1 and a=0 ]とあります。
人間にとっては10進数が基本ですが、PCにとっては2進数が基本なので
Keyという変数から0ビット以外をマスクして取り出す、という風に解釈します。
仮にKeyが0ならば(←キーは押していない)PCからは 0000 0000 0000 0000と0が16個ある状態になります。
これと10進数でいう1とを比べて第0ビットを取り出すと0になります。
0000 0000 0000 0000 ->変数Keyの中身
0000 0000 0000 0001 ->マスク
-------------------
0000 0000 0000 0000 ->10進数では0
結果は0になり偽となってif文では条件は成立していないと(0=偽だから)みなされます。
キーボードの↑を押すとKeyは1になります。
0000 0000 0000 0001 ->変数Keyの中身
0000 0000 0000 0001 ->マスク
-------------------
0000 0000 0000 0001 ->10進数では1
結果は1となり真となります。if文では条件が成立したと(1=真だから)みなされます。
同様に2(↑キー)を評価すると
0000 0000 0000 0010 ->変数Keyの中身
0000 0000 0000 0010 ->マスク
-------------------
0000 0000 0000 0010 ->10進数では2
となり真とは判断されずに、if文は成立していないとみなされます。
ので、こちらの思惑に沿わない処理が行われてしまいます。
[
>>1 ]とはビットシフトをさせています。この場合、右に1ビットずらしています。
[0000 0000 0000 0010]を右に1ビットずらすと[0000 0000 0000 0001]になります。
結果が[2]な2進数を右にシフトする事で[1]に変換して真になるようにしてるんです。
でも普通はこんな書き方はしません。
横から見ててあれーと思ってたけど key&2は正否じゃなくて演算結果の2にしかならないんだな >>*や<<*はシフト演算つって数字の数だけ2で割る/掛ける
訂正 ×でも普通はこんな書き方はしません。 ○でも普通はこんなシフトさせてのキー判定はしません。
594 :
588 :2008/02/14(木) 01:16:20
>>591 詳しくありがとうございました
分かった気がします!
595 :
588 :2008/02/14(木) 01:17:37
>>591 結論はあってるけど途中経過がおかしい
C++やHSPでは0が偽、0以外は全て真と扱われる。
比較演算子は比較の結果が真のとき1を返すが、1以外の値でも0でなければ真。
HSPでは&も&&もandも全てビットごとの論理積なので、
keyが2でaが0の時、((Key&2) and (a=0))は、((2) and (1))になって最終的に0になるから偽。
ビットごとの論理積では( 真 & 真 )が必ずしも真にはならない。
バグの原因は数値をそのまま論理値として使ってるせいだから、↓のように一度比較演算子を通すといい
if ((key&1) != 0) and (a=0) : end
if ((key&2) != 0) and (a=0) : end
>>596 >ビットごとの論理積では( 真 & 真 )が必ずしも真にはならない。
なるほど。
>>583 ウィンドウのタイトルバーは即座に更新されるけど、画面したのタスクバーの中身は古いままに。
>>598 コード試してみた?
ウィンドウタイトルもタスクバーのタイトルも5秒後に同時に更新されるけど。
>596 こうすりゃ良いんじゃね? #undef and #undef or #define and )!0 & 0!( #define or )!0 | 0!( if (key&1 and a=0) : mes "a" if (key&2 and a=0) : mes "b" 欠点として、ifの条件式をカッコで囲まなければならんけど、 Cと同じと思えば気にならんし。
>>598 0.1秒ごととかの更新でもまずついていけない。諦めるべし。
ツリービューの選択されているアイテムのテキストを取得するにはどうすればいい? 選択アイテムのハンドルは取得出来るけど、テキストが取得出来ん。
以前スルーされましたが、MCIでFLV形式の動画を再生させる方法はありますか? ファイルをplay.mpgとかでコピーすれば再生可能ですが開くまでに結構時間が…
>>604 質問スレでそういう答え方って意味ないよな
分からないんなら黙ってろと
>603 リネームして開けば?
>>605 codec入れたからMPGに拡張子擬装して再生出来るんじゃん。
お尻がムズムズしてきた
蟯虫検査をせんとな
画像の読み込みにbuffer使うかどうかの判定はどの辺りですればいいかな? 今まで全部bufferで読み込んでからやってきたんだけど、それでいいのかどうか。 今つくってるスクリプトでは数百枚は画像読み込むんだけど、1度の起動で1,2回使われるか どうかって画像は直接読み込んだ方がいいんだろか? 逆に、数百もをbufferで最初に全部読み込んでおくデメリットはある? メモリずっと食い続けるとか、その読み込み時だけ時間かかるだけで他はない、とか。
最後の一行の通りではあるが、何を作ってるかにも依る。 その画像をユーザーが指定出来るならば少し考えた方が良い。
>>612 数百は多いな、bufferをキャッシュにしたら?
50枚だけbufferを作って、新たに参照された画像はbufferに読み込む
一番長く参照されなかった画像はbufferから破棄、と
何を書いてるかによるが、工夫すれば楽しいぞ
>612 アドベンチャーゲームみたいなもんを作ってるわけか? 頻繁に使用する画像ならともかく、 背景画とかなら、使用するたびに呼び出せば良いだろ。
616 :
デフォルトの名無しさん :2008/02/20(水) 01:53:28
HSP4まだ?
HSP4には是非とも構造体のサポートを頼む
今日から3の勉強始めたばっかりなのにフヒィ!
HSP3のベータ版って通常版とどのぐらい違うんでしょ? かいつまんでで良いので
メルアド入力無しでもDLできるのは良いとして HSP3.1のアーカイブ版って無いのか('A`)
東京と大阪ならさほど違わんな。
全然関係ないけど大阪の人は本当に橋本でいいのか?
>622 そういうこと。ベータ版も正式版とそんなに変わらんって事さ。
インタプリタやめてくれよ
628 :
デフォルトの名無しさん :2008/02/21(木) 07:11:15
てかHSPのコンパイラって無いのか
629 :
612 :2008/02/21(木) 15:35:31
レスありがとう。遅くなってスンマソ。
>>613 つくってるのはゲーム。アクションやシューティングみたいなのじゃないし
RPGのマップみたいなのもない。フィールドマップのないRPGみたいな感じかな。
>>614 なるほどー。それは思いつかなかった。
>>615 ゲーム性のあるアドベンチャーみたいなもんかもしれない。
下記に纏めてあるけど、その直接読み込むと「どうなるのか」を理解してないんだ・・・
HSPに関しての説明で、「画像読み込みはbuffer使ってgcopyで!」ってのしか見た事なくて。
仮に頻繁に使うのだけbufferで、他picloadでというスクリプト組んで、自分の環境で問題なくても
他の人の環境だとやたら負荷がかかって問題あったりするのかなぁ?とか。
んで。
picloadで直接読み込む場合のデメリットを詳しく知りたい。
picloadで直接読み込むのも、buffer画面に一旦読み込むのも負荷は同じだよね?
アクションゲームなんかの場合にこれだと、カクカクしそう、くらいには想像できるんだけど・・・
同じなら結構な数を直接読み込む事で済ませられそう。
>>629 以下のコードでscreenとbufferに対するpicloadの負荷の掛かり具合を調べた。結果は
Screen > 32ms/Picload
Buffer > 26ms/Picload
この差をどう受け止めるかは作るソフトによって変わるので何とも言えんが
bufferに一旦読み込むのも負荷は同じってのは改めましょう。
#uselib "WINMM.DLL"
#func timeGetTime "timeGetTime"
dim Time,4
screen 0,640,480 : buffer 1,640,480
gsel 0 : title "Now Screen testing"
timeGetTime : Time(0) = stat
for i,0,100
picload "Test.jpg"
next
timeGetTime : Time(1) = stat
title "Now Buffer testing"
gsel 1
timeGetTime : Time(2) = stat
for i,0,100
picload "Test.jpg"
next
timeGetTime : Time(3) = stat
title "Finished"
gsel 0 : cls
time1 = (Time(1)-Time(0))/100
time2 = (Time(3)-Time(2))/100
mes "Result"
mes "Screen Picload " + str(time1)
mes "Buffer Picload " + str(time2)
screenへのpicloadは、読み込み+描画が行われているのに対し、 bufferへのpicloadは、読み込みのみなので、同等の動作にしようと思ったら、 画像をウィンドウにgcopy等で転送する手間がかかるな。
今日HSPを始めた者なんですが、正直、まずどういうことから手がけていいのか分かりません。 そもそもプログラミング自体、未経験も当然なレベルなんです。 参考になるサイトとかってないですかね?
普通はHellowWorldからだろうけど 正直、何がしたいかによる。
>>632 やりたいことを、やりたいとおりにやればいいのさ。
敷かれたレールの上しか歩けないのなら、別のことをやった方がいい。
14000行程度のテキストをnoteloadすると 1800行程度しか読み込んでくれません。 同じテキストをエディタで読み込んでも同様です。 何か似たような現象知りません?
636 :
635 :2008/02/24(日) 01:54:00
自己解決 改行コードに問題アリでした。 スレ汚しスマソ
>>632 マニュアルの目次にある「初心者のためのHSP入門」をクリック!
初歩的な質問ですまん。 emes命令を使いたくて四苦八苦しているんだが、 どうしてもエラー6が出てしまう。 #include "hsp3util.as" text 100 emes "あいうえお" エラーで表示される行数は書いてもいない行番号。 モジュールはcommonファイルに入っているし、 作業ディレクトリに入れてみてもダメだった。 ヒントでもいいから教えてくれorz
HSP→HSP拡張マクロを使用する
あ(´д`;) どうりで関数化された命令が使えないと… 迅速なレスありがとう、本当に助かった。
初歩的な質問で申し訳ありません。 単純な割り算を計算させようとしているのですが小数点以下が計算されません。 仕様なのはわかるのですが小数点以下まで表示させる方法はないのでしょうか? 何卒お願いします・・・
>>642 a = double (1) / 3
これで1÷3が小数点付きで計算されます
>>643 迅速なレスありがとうございます。
大変助かりました。
本当にありがとうございます。
HSPを入手したいのですが オフィシャルサイトにはインストーラ形式しか見当たらず当惑してます zip版はどこにあるのでしょうか?
質問させてください。 与えられた数値の、10の位以下を0にしたいのです。 例) 1923 -> 1900 230 ->200 アルゴリズムを考えてみましたが、思いつきません。 お知恵を貸してください。
>>648 a = int ( 1923 / 100 ) * 100
b=1923 a=b-b\100 とか
10進数のままシフトさせたらどうなるのかな?
と思って試したら普通にビットシフトされててちょっとガッカリ
10進数のままシフトしてくれたら
>>2 と<<2で出来たのに。
まぁどうでもいいか。
>651 お前ビットシフトを理解してないだろ。
651はBCD表現の話をしていたんだよ! Ω ΩΩ <な、なんだってー
>>649 ,650
ありがとうございました。
言われてみると簡単ですねorz
655 :
デフォルトの名無しさん :2008/03/09(日) 11:13:01
いや〜 ひまだねぇ・・・ 最近、やっとPSP-2000買っちゃったよ。
>>656 hspext.dllを実行ファイルと同一の場所に置くか
パスが通った%WINDIR%やSYSTEM32フォルダにおいて実行しましょう。
普通は同梱するけどね。
ついでにAPIでクリップボード使えるようにして hspext.dllを追い出してみたけど、かなりソースが増えるな。 クリップボードって面倒だなぁ。
そこで古代技術ですよ n="あいうえお" mesbox n,0,0 :mid=stat objprm mid,n sendmsg objinfo(mid,2),0xB1,0,-1 ;EM_SETSEL 0xB1 sendmsg objinfo(mid,2),0x301,0,0 ;WM_COPY 0x301
古代進おつ!
>>657 ありがとうございました。
まさか、dllを同梱するなんて思いませんでした。
「hspext.as」をインクルードしただけで満足してました。
前まで使ってたプログラム言語はコンパイルした時に必要なdllとかコピーされてたので
>>658 APIですか、大変そうですけど頑張ってみます。
実行ファイルを小さくしたいのに、dllとか同梱して増えたら本末転倒ですから///
すいません・・・ネットがあまり繋げない状態で・・・
>>661 659のコードを参考にすればAPI使わなくてもAPI叩かなくてもなんとかなるよ。
659のままだとHSP3だと動かないけど。
2.6だと動くのかな?
ヨクワカンネ
>>662 うぉー動きました!!!
ありがとうございます。
>>659 ありがとうございました。
コピペしただけなので、これから命令リファレンスみながら勉強させて頂きます。
調べてみました n="あいうえお" ;変数を設定して mesbox n,0,0 ;ボックス作って mid=stat ;IDを取得して objprm mid,n ;nに設定し直す sendmsg objinfo(mid,2),0xB1,0,-1 ;EM_SETSEL 0xB1 ;取得したIDの部品の文字列を選択して sendmsg objinfo(mid,2),0x301,0,0 ;WM_COPY 0x301 ;選択した文字列をコピー これって、「objprm mid,n」の部分って 必要な時に、文字列を変える処理でいいんですよね? メッセージボックスを何個も作らないで、これひとつで全部を代用する為に。
mesbox n,0,0 を mesbox n,100,100 にすればどういう状態なのかを確認出来るよ。 その状態でobjprm mid,nを数値を変えて色々試すといいっす。
突然ですが。 dialogで二重に発生するソースを教えて。
主語
「おおアブダラ様、私は、『ウィンドウを一度で、2個出したい』のです。 どうか教えてくださいませ。」という事であろう。 素直に言えばいいのじゃ。≫666よ。 小さき者よ。≫666よ。 いつか光が差すであろうぞよ。 精進するのじゃ。 ・・・さらばじゃ。≫666よ・・・
つ glicoコマンド
glicoってなぁに? 出来れば、ソースを書いてくんださい。
#module #uselib "USER32.DLL" #func MessageBox "MessageBoxA" int , int , int , int #deffunc doubledialog str mes1 , str mes2 str1 = mes1 : str2 = mes2 pstr1 = varptr( str1 ) pstr2 = varptr( str2 ) MessageBox hwnd , pstr1 , 0 , 0 MessageBox hwnd , pstr2 , 0 , 0 return #global doubledialog "Test1","Test2" こうか?w
673 :
デフォルトの名無しさん :2008/03/15(土) 18:37:49
pokeとかpeekってc言語で表現するにはどうすればいいですか?
ポインタ使って好きに書き換えるよろし
ありがとう
676 :
デフォルトの名無しさん :2008/03/16(日) 03:34:16
HSPは簡単とか見かけたので挑戦してるんですが難しいです 3日でシューティング作ったとか信じられないです 私の頭が悪いだけでしょうか 時間の無駄なので諦めた方がいいでしょうか?
プログラミングの知識が全く無い状態では 参考サイトなり参考書籍なりを見ながらでないと 天賦の才能が無い限り無理。 簡単な初心者向けの解説サイトや書籍等があるので そこを参考にしつつ少しずつ自分のものにすればおk 人が3日でシューティングが作れたとか 他人と比較するのは意味ないっす。 あくまでも自分が楽しめるかどうか、です。 今、HSPなりC++なりをバリバリ使える人も 最初はHellowWorldから始めたもんす。
678 :
あみぢ厨 :2008/03/16(日) 21:15:52
ところでシューティングゲームって、 今となっては、どんなのを作ったら喜ばれるのだろうか・・・。 うーむ。
弾幕ゲーかね 個人的には面白い横スクロールが見たいけど
1. 硬派なシューティング 既存のパクリではない仕様で、 難易度はシューター向けにチューン 2. キャラゲー 同人ならパロでもいいが、オリジナルでもいい 難易度はヌルめなものからシューター向けのものまで選べると良い 3. リスペクト 既存のシューティングを元にした同人作品 元ネタを知ってるとニヤっとするネタを仕込む あるいはこれらの掛け合わせ。
681 :
あみぢ厨 :2008/03/16(日) 23:04:10
・柔派 萌えキャラいっぱい 女の子 ファンタジー ・ストーリー、絵(特にキャラ絵)、音楽、世界観 重視 ・システムはシンプル、アクション寄り、ガシガシ進んでいく ・多少の被弾は気にしない HP/MP 制 ・スコアとかオマケに過ぎない。 こんなSTGを構想中なのですが、ちょっと考えを改めた方がいいですねぇ。 うーむ。時間が無限に欲しいぜ。 え? もう休み終わり? orz orz orz
なんで?自分の作りたいもの作ればいいんじゃね?
683 :
あみぢ厨 :2008/03/16(日) 23:23:23
自分の作りたいものを作る。 そうですねー。それが第一ですね! 第二はですね・・・。 ぶっちゃけると、知名度がある程度欲しいのです。 「ちやほやされたひ」ってやつ? はるか大昔2chの某スレで、何度か自作ゲーの流れになった時は 脳汁が止まらなかったのよ。 大して能力が無い俺でも、誰かが話題にしてくれるのですよ。 頑張れば! なんか俺、死んだほうがいいな。 寿命あとどのぐらいかな?
喜ばれるものを作るのって別に悪いことじゃないと思うぜ。
気持ちは分かる。 作ったものが評価されると嬉しいもんだしね。 でも、例えば、最初から富士山の頂上に飛んでいこうとしてもそれは無理なわけで 地道に一合目からステップを踏んでいかないとダメなわけですよ。普通の人は。 ヘリとかで頂上に飛んでけばいいジャン、みたいに思われると思いますが それは限られた、天賦の才能がある人に限られる訳で。 とりあえずHSPで作るんなら、不恰好なコードで構わないし 画面に絵や文字を表示するだけの単純なもので構わないので 何か作ってみて、HSPとプログラミングに慣れる事が最初の一歩ですよ。 特にHSPは、細かい事をあまり意識せずに作れちゃうので プログラミング初心者には向いてるんじゃないかな。
目的は人それぞれ 商売する目的が「人の役にたつものをつくりたい」という人もいるし 「金儲けがしたい」という人もいる 問題はやるか、や ら な い かだ
や ら な い か を強調するのヤメレw
うほっ!
いいボタン!
HSPをダウンロードしようと思うんですが 無料ですか?
HMemory.dllで変動アドレスは取得できないの? わざわざうさみみで解析するのつかれたお
_,ィ、 ,r、__ ,.ヘー'´ i `´/ `i_ /ヾ、 ヽ、 i / /ヽ _ィ、〉 > ´ ̄  ̄ ` く ,ゝ、 }、 ,>'´ 、 ヽ./`ヽ ┌! / / i 「`i ヽヽ ヽ } Y ! | | l i i l i ',__,.ゝ ,' | | | !l l | l l ! i ! | | | | j___j | |i i! |i! l ,.|‐T丁i! ハlj, --!`トlノ、|| | ! ! レ'i´`j "i´ `iヽ, i || _ | l |i iバ__ソ L__ソ /.ノ |! _ヽ) | | |l |、//// ' ///// |! |i ヽ) !ハ |! |,ゝ' ´ ̄ ̄ ` く レy'|! __,ノ レ'ヽiハ / \}'´ ̄ `ヽ、 ィ´ ̄/ ,べY 取得できるが Y`i__ \ 〉/ / , 、ヽ お前の態度が /_`ヽ\ \ ,ィ'ん、 / ! '´__ ヽ 気に入らない /´__,.` ', \ ァ'` `ヽ、/ー' /! __`ヾ! レ'´ _,. ! \ i /ー-ィ、 ィ__! ___`フ / ヽ二 /7 _i弋 / 辷j ! ヽ / / / / } j´ 〉 ヽ、 冫 ヽ__ュ_y\ / / /ヽヘ/え´ / \'´` `}ー-、_,ゝくi ヽ、 ____ ,. イィ_,、 __う'´__/ , `>ャ,`Yー-‐'^ |ニ=ー- ー-/ `^7 ,ゝ、ヽ /// l ! | / } / | iハ_j く///f´ ̄l/ | i y /-、| | // | ┌ヽ. / `ー-='´ _| /` | |\ i l | ,ゝ,ハ / ´,ハ /〉 レ' ヽ
>>692 私奴の知識では固定アドレスしか書き換えできません
ご教示願います
>>693 スマン、フリーウェアだったのか。
さっそくダウンロードしてくるわ。
>694 お前には100年かかっても無理。あきらめろ。
697 :
デフォルトの名無しさん :2008/03/21(金) 15:16:19
ソースごちゃごちゃしてきたから、moduleやincludeつかってソース分割してみたんだが、 依存関係とメンテナンス性を勘案して分割するのがかったるい。 特に行番号上の前後関係が難しい。 オブゼクト指向っていうの?みんなはどうやってるんだぜ?
ソース分割とオブジェクト指向は関係ないでしょw。手に負えなくなってからあわてても 手遅れのような気がする。 ハ_ハ ('(゚∀゚∩ 気がする! ヽ 〈 ヽヽ_)
>>698 おしえてよ!!!ぼくの関数達ががからまって解けなくってるよ!!
メソッドなら実行行より後にあっても呼び出せるけど HSPだと関数やらモジュールやらを先に宣言しなくちゃいけないから不便だなー
メインループとそれに付随する処理だけメインソースに書いて それ以外はなるべくgosubで処理するようにする。 で、メインソースの最終行にstopとサブルーチンを纏めたサブソースをincludeする。 関数も一まとめにして別ソースに分けてメインソースの最初の方でincludeする。 定数定義とかAPIとかモジュール宣言も、それぞれ別ソースに一まとめにしてinclude。 処理の流れはメインソース見れば分かるのでとりあえず問題ナシ。 こんな感じで書いてる俺。
>>700 行の前後ねー・・それにつきるわ。不便ですよね。
んでメソッドってなに?
>>701 gosubあんま使わない(モジュールにしちゃう)けど、
メインから1階層下の処理郡はgosubでやってみるかな。
俺はgosubは変数(名)管理の負担軽減に貢献しないので割り込み時ジャンプ
のためにしか使ってない。
自分の場合、速度やタイミングを考えなくていいソフトしか作ってないので、
モジュールとユーザ定義命令がデフォルト。名前空間を分割しないと、ファイル
分割の効果も半減してしまう。
>>702 >んでメソッドってなに?
他の言語の話でしょ。
ところでdev-MLのあいつ、絶対MLの過疎化助長してるよ。カンベンして欲しい。
>697 VC++に乗り換える。HSPはもう捨てなさい。
705 :
353 :2008/03/22(土) 22:13:27
aの値によって処理内容を変更しようと思って、ifかswitchのどっちを使うか迷ったんだけど、 処理速度を比較してみたらifのほうが速いっぽい。 この場合ifを使うべき? #include "Kernel32.as" repeat 10 GetTickCount:begintime=stat: repeat 100000 a=rnd(5) /* if a=0:b++ if a=1:c++ if a=2:d++ */ /* switch a case 0 b++ swbreak case 1 c++ swbreak case 2 d++ swbreak swend */ loop GetTickCount:endtime=stat:mes (endtime-begintime) loop
名前が353になっていますが気にしないで下さい
画像処理とかする訳でもないなら見やすい方で組むべき。 つか、 変数で処理分けするなら on gosub 使った方が速いし見やすい。 ifを増やすと分かる。
ifもswitchも中身は同じ。 switch文は実際にはマクロの一種で、コンパイルの前に以下のように置き換えられる。 p1 = a if ( 0 ) ; p2++ if ( p1 = 0 ) | p2 : b++ : goto *end_switch if ( p1 = 1 ) | p2 : c++ : goto *end_switch if ( p1 = 2 ) | p2 : d++ : goto *end_switch *end_switch 変数2つとラベル1つが無駄に作られる上、余計な処理が増える(特にgoto文)ので ほとんどの場合単純なif文より遅い。 よって速度を気にするならifを使うべき。 repeatとfor、whileの関係も同じ。
710 :
デフォルトの名無しさん :2008/03/23(日) 13:00:45
質問いいですか? 例えば、以下のようなスクリプトを書いて実行したとき、 onkey gosub *set repeat mes "cnt " + cnt await 3000 loop *set return 何もしなければ3秒ごとに"cnt ?"と表示されますが、何かキーを押しっぱなしにすると、 "cnt ?"が待ち時間なしで次々と表示されてしまいます。 これは、await中にキー割り込みが発生して、gosubから戻ってきたとき、 awaitの残り時間が無視されてしまうってことでしょうか? HSP ver.3.1 os:WindowsXP
>>710 無視されるんじゃなくて次の行に処理が移るから
712 :
710 :2008/03/23(日) 13:25:16
>>711 レスありがとうございます。
そうなんですかー。そうするとwaitやawaitを使うなら、
onkey, oncmd, onclickなどの命令は使わないほうがいい
ということなんですかね。うーん。
※awaitをwaitにしたり、onkeyをonclickやoncmd(WM_KWYDOWNを指定)
にしても同じような結果になります。
>>712 やりたい事が分からないけど
awaitじゃなくWM_TIMERでmes cntを回せば?
714 :
710 :2008/03/23(日) 13:36:24
>>713 そうですね、検討してみます。
stick命令で使用できるキーが限定されているので、
onkeyでキーを取得してstick命令にかわるものを作ろうかなと思いました。
716 :
710 :2008/03/23(日) 13:59:58
>>715 onkeyでlparamのbit30を調べると、キーが押された瞬間?がわかるので、
getkeyで実現するよりも適切かなと思いました。
getkeyのほうも検討してみます。
>>716 押された瞬間なら
oncmd gosub *check,WM_KEYDOWN
でOK。
離された瞬間なら
oncmd gosub *check2,WM_KEYUP
な。
718 :
デフォルトの名無しさん :2008/03/23(日) 14:31:49
入力した英単語の音声(wavファイル)をダウンロードするソフトを作ろうと思って、
hspinetを使ってみようと思いました。
goo辞書から音声ファイルを取り込みたいのですが、
まずは、検索した英単語が載っているページをダウンロードして見ようと思い、下のコードを記述しました。
netinit
neturl "
http://dictionary.goo.ne.jp/ "
if stat : dialog "ネット接続に失敗しました。" : end
netload "search.php?MT=" + word(英単語1語を格納済み) + "+&kind=ej&mode=0&kwassist=0"
stop
しかし、「エラー:ダウンロードファイルが作成できません。」と表示されてしまい、出来ませんでした。
インターネットに接続するプログラムを作るのは初めてなので、わかりません。
出来ればご指導のほど宜しくお願いいたします。
>>718 netdlname命令で保存ファイル名を指定するんだ!ファイル名に使える文字だけを
使うんだ!
HSPで作成されたソフトは 商用、非商用、同人ソフトを問わず、どのような形態での使用も可能です。ただし、違法な行為には使用しないでください。 とあるが、違法な行為ってどういう場合よ。
無修正エロゲ?
まーソフトなんて結局ユーザーの使い方しだいで役に立ったり悪用だったりするからね アホ役人の考えたコンピュータウィルス処罰の法案では format d: というバッチ/コマンド/文字列だけでも違法な可能性があるというから笑える、いつ思い出しても楽しい
WM_KEYDOWN / WM_KEYUPはフォーカスがinputにあるとメッセージが来ない。 だからエンターで入力決定とかしたいときはサブクラス化しかないのかー! とか思ったが普通に onkey 使えばいけるんだよな('A`)
728 :
718 :2008/03/24(月) 08:27:52
>>720 レス有難うございした!
うまくいきそうです!!
hspdxfix の es_screen で出した画面の解像度が screen 0,x,y で変わることを偶然見つけたんだが この使い方は正しいのか?
>729 DXFIX掲示板の過去ログに >本来p1,p2に任意の数値を入れればそのサイズにウィンドウが変更されるはずなのですが、 >なぜか初期のウィンドウサイズより大きくはならないようです。 >これについては後日調査しますが、es_screen実行後にscreen命令を使ってウィンドウサイズを >変更することで対処することができます。 とあるから、想定外の動作っぽいが、当面はOKなんじゃないか?
CDのトレイが開いてるか閉まってるかを見る方法ってある?
732 :
デフォルトの名無しさん :2008/03/26(水) 10:30:23
覗けばいいんじゃないのか?
>>731 stat に 1 が返ってくれば開いています。
それ以外なら、閉まっています。
>>730 おお、わざわざサンクス
とりあえずscreenでいろいろ試してみるが、
本当にプラグイン製作者さんには感謝の限りだな
まだ勉強してないのですがオンラインゲームを作ることは可能ですか?
オンラインの規模が測りかねるけど通信プレイならディアボロの大冒険という実例が
>>736 これはすごい! ありがとうございます!
解せないのは、!の後にスペースが入ってる件。
寧ろ無いほうが不自然じゃないか? 「、」「。」の後にスペースが入らないのは当然だが、 英語のように、単語間にスペースが入る言語(確かインド=ヨーロッパ語族とかいう奴)から来てる「!」「?」とかは、 そのあとにスペースを置くのが決まりっぽい まあ日本で使われて久しく既に日本語の一部みたいなもんだから、気にすることもないんジャマイカ 例外も多々あるし HSP関係ねーな
日本の文章でも!?の後にスペース置く慣習あるよ それよりかぎ括弧閉じる前に句点置く奴は後頭部を打ち抜く
初心者質問すみません。 hsp3.1です。 for x,1,10,1 x = x +0.5 mes x next repeat 10 mes cnt+0.5 loop どちらのループでも、表示されるメッセージでは小数点以下が切り捨てられてしまいます。 ループの回数を表している変数(上の例ではxやcnt)を実数の数式に用いたい場合は どうしたら良いのでしょうか。
すみません。 最初のループの内容が少し変でした。 x=x+0.5 ではなく、 y=x+0.5 として mes y でした。
>>743 for x,1,10,1
y = double(x) +0.5
mes y
next
repeat 10
mes double(cnt+0.5)
loop
なるほど! 勉強になりました。 ありがとうございます。
HSPって非公式のコンパイラってあんの?
自前で実行ファイル作れるものはないでしょ。
TAB入れなくてもコンパイラ出来るのにTAB入れる意味あんの
コンパイラ出来るって何語だよ
750 :
デフォルトの名無しさん :2008/03/30(日) 02:33:04
命令はマニュアルをよめばわかります それでも仕様書を一通りよんでそこそこ長いサンプルプログラムをみると 「こんな風に書いて動かしてるの?こんなに難しいの?」 って感じで想像もしないような書き方で動かしていて 時間をかけてソースを追っても中々理解が進みません そのサンプルと全く同じものを自力で1から作ろうとしても 今の私のレベルでは到底できないです 本当は作りたいソフト(アイデア)がたくさんあるのですが 実現できそうになくて無念でなりません
HSPってまだあったのかよ
>>750 自分が作りたいソフトの一機能のサンプルになるような小さいものから
作っていって慣れていくしかないね。マニュアルに含まれてる「入門」は
読んだ?
>>748 コンピュータが読める(コンパイルできる)こと以上に人が読めることが大切
インデントしたほうが人にとって読みやすいと思いません?
754 :
あみぢ厨 :2008/04/02(水) 07:49:44
\コンパイラ出来る/
cygwinでhsp用のdll作るのに挑戦中(・ω・` )
ギブアップ\(^o^)/
>>756 それを言うなら、「ギバップ」が正しいようです。
ギヴァッじゃね?
ングィウヴァッッじゃね?
ファイルサイズの大きさはともかく 実行速度がもう少し早ければかなり実用的なのに
>>760 ハードのスペックを標準的なクラスまで上げれば?
マシン語を使え
スペックをいくらあげようが他の言語より明らかに遅いしな。
764 :
デフォルトの名無しさん :2008/04/04(金) 02:10:33
話ぶったぎってすいませんが、pcbnet2のマニュアルってどこにあります? 1時間以上ググッたりしましたが分かりませんorz
HSPが遅いとかいってる奴は 使い方が間違っているといわざるを得ない
まあ遅いのは事実だが
最小化された別アプリにキー送信する方法ってありますか? keybd_eventじゃアクティブの窓にしか効かないし・・・
770 :
768 :2008/04/04(金) 20:37:02
出来ました。ありがとうございます
767だ凹〇
772 :
あみぢ厨 :2008/04/04(金) 21:45:25
「HSPは遅い」 とか面白すぎです。 どんなシステムを作りたいのかが先だと思います。。 HSPでそれが実現できないなら、別環境にGOってだけかと・・・。
俺のHSPは速い。
HSPが遅いのは周知の事実!!
遅い? だったら… awaitを使えばいいじゃん!
日本語BASICより早い。
インタプリタだから遅くなるのは当然 ただ早ければもっと使えるってだけだろ
上級スレにかかれてたけどapi直接叩いた方が遅くなるってどんだけ。
#uselibと#funcでdllから関数呼び出すとき、 デフォルト引数って使えないのかな? 例えばint型をhsp側で省略すると、0が渡されてるみたいだけど。
マクロ使えば出来るんじゃないか?
>>780 ありがとうございます。hsp側で設定でやってみます。
HSPはまだ構造体は使えんのか?
783 :
あみぢ厨 :2008/04/06(日) 13:29:41
構造体単独の機能が必要なプログラムってどんなのだろうか? クラスみたいな事が出来るならともかく、 アドレスぶち込んでおく領域を定義出来ない時点で、 構造体だけ用意できても意味がなくね?
遅ければ機械語使うまでだな
HSPからコンソールアプリケーションを実行する際、 コマンドを代入してある変数を使いたいのですがどうすればいいでしょうか?
786 :
デフォルトの名無しさん :2008/04/06(日) 19:01:09
プログラムとして難しいものというのはいわゆるどういったもの なんでしょうか? 例えばNet-Ballのような波をうつもの、キャラを同時に複数動かす、 3Dポリゴンとか難しいと思いますが 他にはどういったものがあるんでしょうか?
hspはapi使えばそれなりの事が出来ると言っても、 やっぱユーザーは中高生や初心者だからそれなりのアプリは出てこないな。 ABはHSPなんかとは比較にならないくらい難しいし資料少なすぎだし。
lameのフロントエンドで有名なLIFEとかは確かHSPじゃなかったっけ
>783 決まってるだろ。API使うには構造体が使えんと話になんねー。
ちょっと微妙な質問になるんだけど、つくったアプリを配布する前提で 特殊なフォントを使った場合って、そのフォントをパックするなり同梱するなりするの? HSPについてってよりフォントそのものについての疑問に近い気がするけど・・・ 例えば、どっかからAというフォントをDLしてきて、俺のPCにいれる。 で、そのフォントを指定してHSPで色々表示するスクリプトつくる。exeにして配布。 DLして俺の作ったアプリを動かす人のPCにAというフォントは入ってない、するとどうなる?的な。 根本的に物凄く的外れな事言ってるかもしれないけど、フォントそのものについて調べても 欲しい情報が全く出てこんかった。 俺が何を疑問に思ってるのかわかったら答えておくれ・・・
ぶっちゃけ、そのフォントの使用/利用規約による。
>>791 一番無難なのはマニュアルに
こっからAというフォントDLしてくれって書くことじゃないかな
まあ、極力MSゴシックみたいにどのPCでも入っているフォントを使うか
あるいは画像にして使うか(この場合はフォントの利用規約によるかと)
相手のPCにそのフォントがない場合は sysfont 0 のフォントが使われるはず
>>790 今でも十分なサイズの変数用意して適切に値をセットすれば
構造体としてAPIに渡せるぞ
>794 それが面倒じゃねーか。 構造体使えたら楽。 後HSPじゃコールバック関数は作れんから、 そういうのを引数として呼び出すAPIも使えん品。
ただ、それで実行が遅くなったり、デメリットの方が大きくなったらなぁとは思う。 それなら、全部Cとかで作った方がいいw
ほんと。なんでC使わないんだろこの人…
hsp3.1でDirectX(hspdx.dll)を使っています。 終了するときに不正処理が起こってしまいます。 es_screenやes_mesなど基本的な命令しか使ってなくても起こる現象なので、 どうも仕様っぽいのですが、みなさんはどう解決されてるのでしょうか?
こんな感じで入れていてもダメでした。 #include "hspdx.as" es_ini es_screen 256,224,8,4 gmode 2 *main//メインループ es_cls pos 10,10 : color 255,255,255 : es_mes "AAA" es_sync 10 await 1 getkey a,27 : if a=1 { es_bye : end } //ESCで終了 goto *main
>>800 とりあえず、ウチだとそのコードではエラー出ないね@HSP3.1
念のため、HSP再インスコしてみるとか。
それでもダメでした。ちなみにWindows Vistaです。 旧バージョンの2.61だと大丈夫だったので、 エディタが使い辛いけどこっちで作ろうかと思います。
あ、Vistaなのか。実際のところ対応とかどうなんかな。 持ってないのでわからんけどw
>>795 > 後HSPじゃコールバック関数は作れんから、
> そういうのを引数として呼び出すAPIも使えん品。
ちょくと氏のプラグインでできるんじゃね?
>804 ま、どうでもいいけどな。 俺HSPなんて使ってねーし。
>>805 がんばれば使えるようになるよ。
簡単にあきらめないで!
>806 いや、あんな遅いもん使う気しねー。 Cで十分!
そういう事を書きにくる自分が嫌にならないかい?
>>807 いや、あんな遅いもん使う気しねー。
アセンブラで十分!
って言ってほしいのかい?
810 :
あみぢ厨 :2008/04/09(水) 00:36:24
/(^o^)\
#func hoge "hoge" str sdim s,1000 hoge s で渡して、 C側で、 int hoge( char *s ) で受けたポインタを使って内容書き換えてもHSP側で反映されないのは何故なんでしょうか?
812 :
811 :2008/04/09(水) 11:10:45
#func hoge "hoge" pval sdim s,1000 hoge s int hoge( PVal *pval ) char *s = pval->pt; とりあえず、これでいいのかな? 自己解決か?
813 :
811 :2008/04/09(水) 12:01:41
連レスすみません。
>>811 の場合は、メモリのコピーが渡されてるんでしょうか?
で、連続した領域が確保されてることが保証されてるんでしょうか?
>>812 の場合も、連続した領域は保証されてるんでしょうか?
strは文字列。 "hoge" 渡されるのはおそらくはHSP内のバッファのポインタ。 変数の内容を書き替えたい場合は 文字列型でも数値型でも var を使う。C側は int hoge( char *s ) でいい。 dimやsdimで確保すれば連続してる。 確保していない変数は連続していないかも知れない。
>>814 ありがとうございます、varでできました!
連続した領域に関してはちょっと良く分かりませんでしたが、
HSP2だと多元配列も連続したメモリになるってことなのかな。
HSP3だとポインタのポインタってことで。
816 :
791 :2008/04/09(水) 19:43:49
>>792 >>793 レスありがとん。
うーん、なるほど。実際的な問題についてはわかったし、疑問も解けたと思うんだけど
ちょと確認だけさせておくれ。
規約でおkだという前提で、フォントのファイルそのものを作ったスクリプト(配布ファイル)に組み込むというか
所謂普通のフォントのインストールをせずに使用するってのは無理って事よね・・・?
普通に普段ゲームとかアプリとか使ってて、(自分のPCには入ってないであろう)変わったフォントで
表示されたりするから、そういう事は出来るのかなぁと思ったんだけど。
まさか全部画像なんじゃろか。
exec "filename",p1,"command" "filename"の部分に変数を使いたいのですがどうすればよいでしょうか?
sdim temp temp="filename" exec temp,p1,"command"
820 :
あみぢ厨 :2008/04/10(木) 00:08:12
32bitWinOSで作ったアプリケーションって、 64bitWinOSでも、とりあえず動くのでしょうかーッ!?><
動きますが何か? ところでDevMLのあの馬鹿何とかして どう考えても厨房(もしかしたら消防かも)としか思えん言動だ
開発メーリングリストだろうけど、見てないのでわからない。
HSP3用の使えるプラグイン教えれ HSP2用のものしかないし
何がやりたいか教えれ
>827 中国に核弾頭落とせばいいんじゃね?
初心者質問すみません。 サブルーチン実行中にボタンを押したらメインルーチンに戻る、というのは どう書けば良いのでしょうか。 以下のような流れに書くと「サブルーチン外のreturnは無効です」となってしまいました。 *main gosub *sub wait 50 goto *main *sub button goto "END sub",*end_sub stop *end_sub return
HSP製のブラウザってないんかい
>>829 (HELPから引用)
>マウスでボタンをクリックすると、*labelで指定した場所にプログラムの制御が移ります。
>button gotoと記述した場合は、ラベルにジャンプ。button gosubと記述した
>場合は、 ラベルにサブルーチンジャンプを行ないます。
ということだから
この場合のbutton goto先(*end_sub)では、
*mainからgousub *subした分のサブルーチンネストはクリアされている状態というか。
下記と同じ状態になって、エラーになっているのだと思われ。
goto *end_sub
*end_sub:return
button命令では、飛び先は別のプログラムとして起動する、くらいに認識して
書き直したほうが良いのではないかと。
そもそも
サブルーチン内でstopして待ち受ける形に無理があると思う。
*main
gosub *sub
wait 50:goto *main
*sub:button gosub "END sub",*end_sub
repeat:wait 0
if flag:flag=0:return
loop
*end_sub:flag=1:return
>>829 #define WM_KEYDOWN 0x0100
oncmd gosub *KeyDown,WM_KEYDOWN
*main
stop
*KeyDown ;キーが押された時の処理
mes "KeyDown"
return
こう。
あぁ、違うね。 ↑は忘れてくれ。
>>831 ,832
レスありがとうございます。 大変参考になりました。
ボタンジャンプ先でreturnを実行するのを止めることにします。
お蔭様ですっきりしました!
モジュール側でウィンドウを再初期化したいんだけど、 今のウィンドウが、screen/bgscr/bufferのどれで初期化されたとか、 初期化した画面モードって取得できる?
836 :
835 :2008/04/12(土) 13:40:14
BMSCR構造体経由でできました! 画面モードは一部しか分からんかったけど。
自己解決ゥ!
ピクセル単位で精密な画像をつくりたいんだけど、いいツールが見つからないから HSPでやった方が早いんじゃね?と思い立った。 そこで質問なんだけど、bmpでスクリプト実行中の画面を画像保存する命令ってある? 出来れば画面全体より座標で指定できるとさらに嬉しい。
指定座標をgcopyで新しいbufferにコピペしたあとbmpsave
>>838 「ドット絵ツール」のことか?
「アイコンエディタ」で検索してもあんま良いのはないな。
鯖を一人が立ててそこに接続してチャットをするメッセンジャーみたいなものを作りたいのですが、 どのプラグインを使うのが組みやすいでしょうか?
dialogを使う、winAPIを利用する、以外にウィンドウを操作不能にする方法ってありましたっけ
ツマンネ HSPらしく*foo : goto *fooぐらい思い付けよ
自動でキー入力やマウスクリックをしてくれるプログラムを作っているのですが、 NumLock を点滅させることや、メモ帳に入力することはできるようになったのですが、 なぜかお目当てのゲームでは反応がありません。 API を使うのは初めてなので、あちこち意味不明で 何か根本的な勘違いをしている可能性もあり、原因がまったくわかりません。 とりあえず、一秒ごとに w を押すコードを書いたので、ここがおかしいなどあればぜひ教えてください。 #uselib "user32.dll" #func SendInput "SendInput" int,int,int #func MapVirtualKey "MapVirtualKeyA" int,int dim input_struct,7,2 Key = $57 MapVirtualKey Key,0 scan_code = stat input_struct(0,0) = $1,Key+(scan_code<<16),$1 ,0,0,0,0 input_struct(0,1) = $1,Key+(scan_code<<16),$1 | $2,0,0,0,0 repeat SendInput $1,varptr(input_struct(0,1)),28 wait 50 SendInput $1,varptr(input_struct(0,0)),28 wait 50 loop
そのゲームにnPro入ってるんじゃね?
847 :
845 :2008/04/18(金) 10:27:14
>>846 個人製作(多分)のゲームなのでそういった類のものは使われていないと思います。
とりあえずaplkeyで反応あるか見てみれば?
849 :
845 :2008/04/18(金) 15:11:24
aplkey も使ったことがないのでよくわからないのですが、こんな感じでしょうか? #include "hspext.as" aplsel "xxx" aplact wait 10 aplobj "",0 if stat != 0 : dialog "error" : end repeat aplkey 87 wait 100 loop 試してみたところ、if文のところで終わってしまいました。 一応if文を飛ばしても見ましたが、反応はありませんでした。
>>849 if文っつーか、aplobj "",0の行無しではどうか?
あと、最初のaplsel "xxx"で、対象はキャッチできてる?
851 :
845 :2008/04/18(金) 18:24:40
>>850 aplobj "",0 コメントアウトしても相変わらず無反応です。
キャッチできてるかどうかですが、
aplact でアクティブになればキャッチできていると考えてもいいのでしょうか?
stat と refstr にも数値が入ってます。
>>851 aplsel
成功:stat=0 refstr=正確なウィンドウタイトル
それ以外は基本的に失敗。
WinAPIで捕まえるって手もある。
853 :
845 :2008/04/19(土) 05:00:59
>>852 aplsel は成功してると思われます。
stat=0 で refstr に正確なウィンドウタイトルも取れてます。
もう対象のアプリを晒さないと分からんかもな。
皆さんお力をお貸しください。 HSPで作成したexeがいわゆる標準出力にメッセージが出せなくて悩んでいます。 やりたいのは標準出力にメッセージを出力するコンソールアプリケーション(EXE)の作成です。 やったことは次のとおり HSP 3.1 #runtime "hsp3cl" #packopt runtime "hsp3cl" mes "hello world" でスクリプトを作成し、【起動時にメインウィンドウを非表示】をチェックしてexeファイル を作成。 出来上がったexeを起動すると何も反応せず、ゾンビプロセスとなります。 なお、【起動時にメインウィンドウを非表示】をチェックしないとウィンドウが表示され メッセージが表示されます。 よろしくお願いします。
>>855 コンソールから起動しないからじゃないの?
>>856 コマンドプロンプトから実行しています。
実行ファイル自動作成で作れるよ。 それから「#runtime "hsp3cl"」があれば「#packopt runtime "hsp3cl"」はいらない。 #packopt runtimeは実行ファイル作成時にのみ有効で、#runtimeはエディタからの デバッグ実行時にも指定したランタイムを使ってくれる。 あと#packopt runtimeを使う場合は、ランタイム名に拡張子が必須。#packoptは 自動作成用の命令なので、手動でexe作るときにはエラーが出ない。
書き忘れたけど、コンソール用exeが作れた時は、アイコンがカップのやつじゃなくて、 ただのウィンドウのやつになる。 たしかコンソール用exeにはアイコンが指定できなかったはず。。。
860 :
855 :2008/04/24(木) 15:55:04
>>858 上手くできました!
実行ファイル自動作成を行うとhsptmp.exeが出来上がり、それを実行すると
コンソールにメッセージが出ました。すばらしい。
貴重な情報ありがとうございました。
861 :
デフォルトの名無しさん :2008/04/27(日) 00:09:13
HSPで簡単で高速な3Dは何ですか?
誰でも 出来る どんでん返し
>>861 どこの翻訳サイトを使っているのですか?
探しているのは、プラグインですか?
864 :
デフォルトの名無しさん :2008/04/27(日) 07:56:11
Easy3Dが一番いいらしいですか?
簡単なのはEasy3D 高速なのはhgimg3 かな
866 :
デフォルトの名無しさん :2008/05/02(金) 07:29:29
100億円? 自慢してんじゃねよ!
今日も1個HSPでプログラム作ってしまった・・・
やったね! 君は天才だよ!
ひとつのプロジェクトで100億なんてのがあるの? 合計100億で受注したってことだよね?
870 :
デフォルトの名無しさん :2008/05/04(日) 20:51:33
質問してもまともな答えが返ってこなかったのでちょっと悲しいです ポイント制だったら間違いなくポイント払いませんね
ポイント制のところ行けよ
872 :
デフォルトの名無しさん :2008/05/05(月) 17:15:57
[参照]ボタンクリックして、自分で持ってる音楽を設定したらその音楽が流れるように したいんだけど、 mmplayで流す→mmstopで止める だと、途中からじゃなくなるじゃん? で調べたらmmplayとかじゃ無理って分かったんだけど dmmplayとかmciの使い方よく分からないから だれか教えて・・・ windowsXpね
その質問に答えたら何ポイントくれますか?
874 :
デフォルトの名無しさん :2008/05/05(月) 18:29:35
YAHOOだったら1ポイント gooだったら4ポイント よくわからないからプライスレス。 どれも買えねーよwマスターカード
HSPTVの掲示板との2重カキコですか
#module nnn aaa #modinit sdim aaa,6 aaa = "pppppp" return #deffunc testa array a b = "zzzzzzzzzzzzzzzzzzzzzzzzz" mes a memcpy a,aaa@ThisMod,6,0 ; 5bytes以上転送するとバッファオーバーフロー←ここがわかりません ; memcpy a,aaa,5,0 ; ThisModが必要 ; memcpy a,b,3,0 ;エラーにならない ; memcpy a,b,17,0 ;エラーにならない mes a ;上の転送が5bytes未満でも、aが壊れて表示されなくなる return #modfunc testb array x testa x return #global *main sdim mojiretu,16 mojiretu = "0123456789ABCDEF" newmod mmm,nnn testb mmm,mojiretu mes mojiretu ;上でaが壊れたときはこれも壊れる(参照渡しはうまくいっている?) stop すいません質問です。上記のような処理をすると9行目のところでバッファオーバーフローが起こってしまいます。 mojiretuもaaaもOFするようには思えませんし、bを使うケースでは2つともきちんと動くのですが、どこがまずいのでしょう……
>877 sdim aaa,6
testa内からはaaaにはアクセス出来ないと思うのだが aaa@ThisModの中身は877が期待してる物とは別物
880 :
877 :2008/05/06(火) 17:17:54
ありがとうございました。
>>878 そこは100でも255でも同じだったのです。
>>879 なるほどそういうことでしたか。変なポインタを渡してたんですね。
仕様を勉強し直します。
HSP3.1でなんですけど、マクロでマクロを定義することってできますか?
#define hage #define moge mes "boke" hage moge て意味じゃね?ちなみにこれエラー
885 :
881 :2008/05/07(水) 19:05:56
そです。やはり無理か、こういう変則的なことは。 マクロ内の改行の問題もだけど、そういうのが出来たら複数マクロ一括登録もできないかな?と思ったので。 #define init(%1) \ #define %1_get(%?) 〜\ #define %1_set(%?) 〜 みたいな感じで。
>>885 なるほど、一種のクラス的な発想をマクロに見つけたのか
発想は良いけど言語が悪かったな
goto *l11 #deffunc kurimati repeat:stick key,0 if key&256 : break wait 1:loop return *l11 #define くりまち kurimati randomize aadduu=rnd(100)+1;1~100 aa=1 if aa=1{ if aadduu<=20:mes "a":くりまち if 20<aadduu<=50:mes "b":くりまち if 50<aadduu<=90:mes "c":くりまち if 90<aadduu<=100:mes aadduu+"c":くりまち } stop こんな感じでつくると変数aadduuが20以下の場合a b c〜 と表示されて それ以上の場合 b c 〜と表示されちゃう。 50以上でもcからにならないし、aだけやbだけで止まってくれない。 ifの中にif入れるのは無理ってわけでもなくて、2つまでとか決まってるの? ものすごく微妙というか、なんでこんな仕様?って気がするんだけど。
20<aadduu<=50 aadduuがどんな数字でも結果は必ず正になるぞ
((20<aadduu)and(aadduu<=50))
あれ、aadduuが21~50の場合をつくるには(aadduu>20)&(aadduu<=50)
って書き方以外ダメなんだっけ・・・何か20<aadduu<=50っぽい書き方でいけた気がするんだけど・・・
>>888 20以上もしくは50以下、的な判定なのかな?
論理演算?だか自体は実はよくわかってないんだけど・・・。
且つにしたい場合で、なんかそんな感じの書き方なかったかなぁ。
前に&使わずにそんな感じでやった気がするんだけど・・・うーん
>>889 それだけいけるよねぇ・・・あれー勘違いかなぁ。
それこそが自分が思い込んでる「20<aadduu<=50っぽいモノ」かもしれないか。
同じ条件をつくるスクリプトで別の20<aadduu<=50っぽい書き方なかったかなぁ
モヤモヤするー
その別のスクリプトは知らんが 通常は、引き算して0以下を判定するよな。
>>892 引き算して0以下を判定・・・どゆこと?
完全独学で初心者なもんで、もしかしたらすごく基本的な事知らずに
変な事してたのかも。
後学の為に教えてほすい。お暇ならば。
例えば、0〜8の数値を @0-2 A3-5 B6-8 の3種類に分けて処理するとする。 a=4 (←対象の数値を入れる。今回は例として4を入れる) a-=3:if a<0{処理1}:goto *next a-=3:if a<0{処理2}:goto *next (今回はここで引っかかる) a-=3:if a<0{処理3}:goto *next mes "aの値が範囲外":stop *next こんな感じ。
補足: 減算値は今回は全て3だけど @0-4 A5-6 B7-8 なら、順番に5、2、2と引けば範囲を変えれる。 最小チェックと最大チェックをしっかりすれば、比較を一度も行わずに条件分岐させれる。 16bit時代のプログラミングじゃ当たり前だったんだが 今の時代はそんなの気にしなくてもいいからいいよなぁ。
なるほどおお。理解でけた、ありがとん。 今のHSPでもそういう風にやる人が多いのかな・・・? 自分は感覚でわかりやすい&とか使う方でいいかなまだ('A`)
一応、複数の比較が必要な場合は こういう方法もあるんだ、という事を覚えておけばOK。
>891 俺が知る限りそんな書き方出来る言語は一つもないが…
perlかpythonで出来なかったっけ。 まぁ、hspの場合は、論理演算じゃなくてビット演算だからな。
>900 見てみたけど分けわからんなこれw ジェネレーターってなんじゃいww 意味不明だしwww
HSP3の命令再帰呼び出しって、125段くらいが最大なのかな? #module #deffunc rf int j, local i i = j : if i == 0 : return i-- : rf i : return #global rf 125 : stop ; rf 125 ok ; rf 126 終了後エラー ; rf 200 スタック領域のオーバーフローというエラーメッセージが出る
HSP2のころは32回とかその辺だったような 自前でスタックを作って再帰廻してみたら、何これ浅い!とかオモタ記憶がある 100階層も潜れればたいてい何でもできね?
>904 クイックソートはムリポ
>>905 それはソートクイックソート!
て組んだことないけど100回も潜るのか
まあ元の並びによっては行くか
簡単な木の探索でもするのかとおもた
分割がうまくいかない場合にもうまく対処すれば 32回以内には終わると思うけど・・・どうだろうね。
結構浅い階層に限界があるので、一々気にしないといけないってのは面倒だからな。 処理の再帰の深さが決まっていて絶対にその範囲で終わるってのが分かってるなら別にいいんだけど。
バイナリサーチとかは確実に終わるからいいよね。
まあ要するにループ使えと 積極的に再帰を使うような言語じゃないんだろう
じゃ、自己解決ゥ!
switchってswbreakで抜けなくてgotoで抜けもネスト云々ってエラーでないかな? loop命令だとたしかダメだったよね
>912 出ねーよ。 そもそも、switch,for,do,while等のマクロはすべてgoto を使って実装してるからな。
>>913 さんくすー。これで安心してすすめられる
ラベル名はすでに使われています、ってエラーがでた。 ラベル名を変えても同じエラー。 しかもこのエラー、調べてもまったくといっていいほどヒットしない。 error 7を含むと7件、HSPを含むと100件ちょい。 どういうこっちゃ
ソースうp
>>916 事故解決ぅうぅう!しちゃった。
なんか、gotoでとばしてるラベル名だったのが駄目だったみたい。
そこを一致させないと大丈夫という、意味不明なというかどっちみち使えない。
無理矢理他の方法で同じ処理になるようにしたけど。
状況によってgoto使っちゃダメとかあるのかな。
頭悪いな。何言ってるのか全くわからないから。
まったくだな。俺も何言ってんのかさっぱり分からん。 日本語で話せよ。日本語で。
どこが理解できないのかがサッパリだ。そのまんまの内容だと思うが。 gotoの後の*×××とラベルの×××と一致した内容でダメだったんだろ? 一致させなきゃいいが、一致させないとgotoが意味成さんし。 まぁ頭の悪いヤツは自分が頭悪い事に気づきもせず他人に阿呆とか言うからな・・・ もしかして(俺は)頭悪いな。(人の)言ってる事が理解できない。なんだろうか。 で、どういう状況だとそんな事になるかは、知らない。聞いたことないな。 推測だが、他の方法でいけるような場合ってところがミソなんじゃない? どんな使い方してたのか見てみたい。
××× = "変数をラベルで使うな" goto *××× ;error 7 : ラベル名はすでに使われています *×××
921を参考に日本語訳を試みた。 >自己解決しました。 >gotoの引数のラベル名が既に使用している変数とかぶっていたのがダメだったようです。 >それを一致させなければ大丈夫なのですが、意味不明でどのみち使えません。 >他の方法で同じ処理になるようにしましたが。 >状況によってgoto使ってはいけない場合などがあるのでしょうか。 いまだに3行目の意味がわからん。 変数で使用していないラベル名を付ければいいだけじゃん。
文字列型変数にラベル名突っ込んでgotoとかやってるんじゃないかと予想
>922 つーか920=917だろ。自作自演乙
俺もわからんつーか 917と920、ともに 読めば読むほど気持ち悪くなる文章だな。 精神を病んだ人の描いた絵をみるような気持ち悪さというか。 使っている単語が、ことごとく不適当 (単語の意味を誤解したまま使っている) なのが原因ではないか?と思ったが・・・違うか。
>>926 >もしかして(俺は)頭悪いな。(人の)言ってる事が理解できない。
こういう、括弧を使った喋り方とか、
>で、どういう状況だとそんな事になるかは、知らない。聞いたことないな。
こういう独特な言い回しが、怖いよね。
HSP3.1なんだけど、notegetのヘルプで >p1で指定する変数には、読み出すのに十分なバッファを確保 って書いてあるけど、自動で確保されないの?
されるよ。
>929 されてるな。マニュアルが更新されて無いだけか?
931 :
928 :2008/05/18(日) 19:49:13
トンクス。とりあえず安心して使っても良さそうですな。
今まで何も考えずに付属のエディタ使ってたんだけど、他の人は何使ってる? さすがにアレでは大変だと気づき始めたけど、テキストエディタなんて どんなのがいいのかサッパリだ
933 :
デフォルトの名無しさん :2008/05/20(火) 06:43:00
大変って?
Wikiにソースの色分けが可能なエディタのリンクがあるな。TeraPadは 3.xには対応してないが。 Le.Antillaってやつをダウソしたことがあるが、かなり高機能だった。
なんでLaじゃないんだろとググってみたら 先生も同じ疑問を返してきた
mciの命令を使おうとしているのですが、 mci "open sample.mp3 alias abc" mci "play abc" stop と書いて、とりあえず普通に再生だけをしてみようとしてみても 上手く動いてくれません。 どのように書けば再生ができるようになるのでしょうか…?
>>936 コードそのまんまでこっちで試したけど普通に動いたので
ファイルが読み込めてないだけジャマイカ
ファイルのパスを確認するか、一度ソースを保存して
ソースと同一のフォルダにsample.mp3を置くと再生されると思う。
ただ、mmload+mmplayの方が手っ取り早い気もする。
付属エディタがウィンドウ分割機能を搭載してくれたら嬉しいんだが…
そのうち分割表示機能があるFooty2に移行するだろうから、要望出しておけば?
>>937 一度ソースを保存と言うのをしてみたら
動いてくれました。
ありがとうございます。助かりました。
じゃ、決めぜりふを〜!
事故解決ゥ!
hsp3.xなんだけど… inputの第4パラメータ(入力する最大文字数の指定)が 2バイト文字だと無効になるのは仕様ですか?
HSPに限らず、ほとんどの言語では 命令コードに2バイト文字は使えません なでしこは別な
使えません=1 input a, 100, 100, 使えません 使えるじゃん?
>>943 2バイト文字てのはinputに入力する文字のこと? だったら文字数制限は
ちゃんと有効になるぞ。バイト数じゃないぞ、「文字」数だ。
それは変数
>>946 ああそういう意味か
944のせいで命令引数うんぬんかと思っちゃった
943の日本語はそう思われてもしかたないけどね。
いや 2パラでもなく3パラでもなく4パラって時点で気づくべきだったすまん
>>946 あ、本当だー!(汗
なんだよ、この文字数ってくくり方は〜!w
では、入力可能なバイト数での制限ってのは可能でしょうか?
あるテキストファイルの、何行目にあるのかわからない File=D:\DataFolder\sample.dat という行のファイル名部分を test_sample.dat に変更する、という処理をしたいんですが、どうしたらいいのでしょうか? メモリノートパッドで行ごと書き換えれば済むこと、というのはわかるのですが、 上記の行が何行目にあるのかを特定する方法がわかりません。
>>951 入力されたデータを使う時にチェックするしかないんじゃないかなー。よく知らん。
>>951 oncmdとかループで監視とかでアレするしかないかも
956 :
954 :2008/05/21(水) 22:15:35
>>955 あぁそっか、自分で監視すりゃいいだけか。
>>953 行数分notegetを繰り返してすべての行のデータをチェックすればいい。
repeatを使えば、システム変数cntに何回目の繰り返しかが代入される。(1回目は0)
ヒットしたらその場で書き換える。
行数はnotemaxか
>>958 あぁ…こんな単純なことだったのですね。
ありがとうございます。
テキストファイル書き換えるだけのプログラムに何日かけてんだ俺・・・orz...
>>959 repeat notemax
a = noteget 変数, cnt
if instr(a, 0, "検索したい文字列") >=0 : 書き換え処理
loop
という感じですかね。
ありがとうございます。
書き換え箇所が一箇所しか無いのが分かってるなら 書き換え処理の後でbreakした方がいい…かな。
>>962 了解です。
大した量じゃないので大きく影響はしないでしょうけど、
プログラムとしてそのほうがスマート(?)そうですね。
ああ、>961 のnotegetの使い方間違えてた。スルーお願いします
場合によってはnote系命令を使う必要もないね。 目的のテキストを見つけて、その前のテキストと後ろのテキストで書き換え用の テキストを挟んだものを保存すればいいから。 ところでnote系命令ってCRだけの改行かLFだけの改行のどっちかを 認識できなかったと思うけど不便だね。
両方認識したらCRLFが改行2回分になっちゃわないか
screen 1, 640,480, 0, 100,100 mes "HOGE" screen 1, 800,600, 0, 100,100 こうすると、HOGEは消えてしまいますが、 ウィンドウの内容を維持したまま、ウィンドウの初期化サイズを変動させることは可能でしょうか?
>>968 概ね合ってるんじゃ。
コード的には
screen 0,1680,1050
width 640,480
mes "hoge"
await 3000
width 800,600
こんな感じ?
それが嫌ならbufferに描画して必要なサイズに初期化したscreenにコピーするとか。
1680x1050 ていう決め打ちがイヤスw
>>970 やっぱ初期化サイズは、想定される最大のサイズにしとかないとだめかねぇ。
1600x1200だとメモリ食いすぎる・・・。かといって毎回初期化→再描画だとチラツクし。
パレットモード以上にメモリを節約する方法ってある?
普通のWindowsアプリの空白(灰色)部分あるけど、あれはピクセル分メモリ食ってるんだろうか。
メモ帳の背景白色部分は?
>>966 そこは違うタイプの改行コードを混用することはないと決め付けちゃっていいんじゃね?
CRLFと来たら一つ扱いで固定ってことで。それで最初に見つけたコードだけが使われてる
という仮定で決めうち。
確認してみたら、mesやnote系で認識できないのはLF(10)だった。当初はLinuxへの
展開なんて考えてなかったってだけの話かな。それともwin32apiがらみの話なのか。
Linux版のコードはどうなってんだろ。いつか調べてみよう。
>>971 自分のモニタがWSXGA+なのでモウマンタイw
>>972 32bit深度と仮定した場合、WSXGA+でも
1680*1050*32*3/8 = 7056000(Byte) ≒ 6.73MB
約7MB。
イマドキのPCのVRAM容量は128〜768MB。
来月2GBのVRAM容量を持つカードが出るらしいが
正直、フレームバッファ容量なんて気にしなくていいんジャマイカ
>>972 >
>>970 > やっぱ初期化サイズは、想定される最大のサイズにしとかないとだめかねぇ。
ちょっと話ずれるけど、昔のHSPはクライアント領域に直接描画せずにコモン
コントロール置いたりするだけなら、正直に確保する必要はなかった。
今は画面上に実際に表示されるサイズを確保しないとその大きさで表示できない
(リサイズできない)ようになっちゃった。
>>973 えーそんな賢い仕様だったらヤダー!実装がアホでストレートな昔ながらのHSPがすき。
HSPて昔からMac版があった関係か知らんけど、13を改行として認識する命令が多い希ガス
なにげに「良スレ」化してる。 本家が「お子様天国」化してるからかな?w
俺は気取ってるわけじゃないが、なぜか本家に気軽に書き込むのは 躊躇してしまうな。 気がついたらいつのまにか本家は避けるようになってしまっていたw
980 :
あみぢ厨 :2008/05/22(木) 19:29:00
hsp難しいです><
それは深刻だな。HSPより簡単でそこそこ便利な言語なんてあるだろうか? まあがんがって自己解決してくれ。
>>975 マルチモニタ環境とか想定して、デスクトップ全体分確保しようとすっと、
2880x1200とかいっちゃうんで。んで読み込んだ画像の数だけ確保するからえらいことに。(作ってるのは画像ビューワ)
んで半年ぐらい前にこのスレだかで助言を受けて、パレットモードの大ウィンドウと描画領域の32bitウィンドウをSetParentする方法をやってみた。
これは効果てきめんで、メモリ消費量が2/3ぐらいになた。(32bit->8bitだから当然)
ただし、画像を拡大縮小するときに子ウィンドウサイズが変わるんだけど、このときにウィンドウ初期化→画像転写するからチラつく。
初期化→転写の間の描画は redraw 0 じゃ止められないし・・・。
最近は描画しない領域はパレットモードですら勿体無いような感じがしてて模索中。
>>976 みたいなウィンドウをAPI叩いて作ればいいんかいねぇ。世の画像ビューワはどうやってメモリ節約してるのか。
>>982 画像ビューワが実際に何をどうしてるのかは知らないけど
マモリマップドファイルでやれば実メモリを消費せずにファイルにアクセス出来る。
HSPからメモリマップドファイルは…クラスが使えないから少し扱いにくいと思うけど
不可能では無いと思う。
HSP3.0でスクリーンセーバー作ってるんだけど 「wait20回の謎」対策として… repeat 20 : await 1 : loop を実行しても キー検出(終了)をしないのはどうしてですか? 2.xの頃は、これで検出してくれてたと思うんですが…。
awaitの精度が10ms以上だから とエスパーしてみる
>>986 repeat 20 : await 20 : loop や
repeat 20 : wait 10 : loop でもダメなんですゥ〜
>>987 入力を監視するなら、WMでキー入力とマウス入力を監視すれば?
正直、repeat:〜:loop内で何してるのか分かんない。
そのままのコードだとウェイトかけてるだけだし。
oncmd 0 かけても割り込みかかる時って結構あるけどあれって何なんだろう。コツとかあんの?
>>984 小中学生のユーザに丁寧に付き合ってあげられるならいいけど、
自分はちょっと余裕ないなー。
>>988 「wait20回の謎」とは、この事です。
HSPで作成されたスクリーンセーバーは、起動直後すぐにマウスの動きや
キーの検出をして終了してしまうと都合が悪いため、しばらくの間は
終了のための検出を行わないようになっています。
具体的には、waitoやawait命令が20回以上実行されないと
検出が始まらないようになっています。
で、私が作ってるスクリーンセーバーは、メイン画面で動的な処理をせずに
画像を表示するだけなので、スクリプトの中にwaitやawaitが無いんです。
なので、毎回、Alt+F4 で終了しなくちゃならないんですゥ〜w
無限ループでいいじゃん。細かいことはキニスンナ
>>991 そうなのか。
スクリーンセーバーは作った事ないから分かんなかった。正直スマン。
で、スクリーンセーバーって何か特殊な作り方しなきゃいけないの?
イメージ的には、通常アプリがWindowsから呼び出される感じなんだけど。
画面のサイズを取得して、同一のサイズでCreateWindowして最前面に配置。
メインループ内で、キー入力とマウス入力のWMを監視。マウスの移動はマウスの位置を監視…
とかじゃダメ?
画像を一回表示した後メインループでクルクル回せばいいじゃない。
>>989 oncmd 0が利くのって最初にoncmdされたメッセージ1つだけじゃなかったっけ
997 :
あみぢ厨 :2008/05/22(木) 23:35:04
707 名前:デフォルトの名無しさん :03/09/14 05:45
998 :
デフォルトの名無しさん :2008/05/23(金) 00:04:12
HSPでP2Pファイル共有ジュークボックス的なものを作ろうと考えています。 ネット上でユーザーが自由にグループを作成して、 そのグループのメンバーのところに同じ曲が流れるという仕組みです。 <動作> 1.起動すると、自分が属しているグループの全曲リストを更新。 2.その中から聞きたい曲をチョイス。 3.すでに曲が流れている場合には、自分の選択した曲がグループのキューに溜められ、順に演奏される。 4.自分の持ってないファイルの曲が演奏される場合、持っているユーザーから自動的にDLして演奏する。 <機能> ○キューリミット機能 数十数百という常識外れの曲数を登録する嵐的な輩への対抗策。 そのグループ内において、キューに溜められる曲数を1〜20の間で設定できる。 ○グループ認証機能 グループに入る場合に、グループ作成者やメンバーの認証を行う機能。 ○評価機能 演奏中の曲を停止できるのは基本的にチョイスした人のみだが、 評価機能は、グループメンバーの中の何人か(パーセンテージ、絶対人数)が『却下』的な評価を 下した場合に直ちに演奏が中止される。 ○評価機能2 評価は記録され、グループ内のメンバー一覧等で各々の評価を見ることができる。 嵐の評価は基本的に低くなるはずなので、警戒できる。 <応用> ・ネットラジオ的なものも作れる。 <課題> グループの規模によっては曲ファイルの転送がかなりのトラフィックになることが予想されるので、 圧縮転送、及び鼠算的転送(※1)も実装する必要がある。 ※1・・・1人が2人以上に転送する機能。例えば1人がn人に転送する場合、5回の転送でn^5人への転送が可能となる。 これにより、曲ファイル1つに対して数千人規模のグループでも高速で共有できる。
で?
ここ数年で研究が盛んな分野だな
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。