1 :
デフォルトの名無しさん :
2011/03/15(火) 14:47:25.05
2 :
デフォルトの名無しさん :2011/03/15(火) 14:51:37.45
( ^ω^)なんか、テンプレずれ捲りだな…
誰も居ない(//∀//)
みんな他の言語に旅立って行ったのだよ
HSPか 懐かしいな…
>>1 おつ!
つまり、メルトダウンって…
repeat 〜 loop 間に wait や await を入れないで動かしている状態ですか?
7 :
デフォルトの名無しさん :2011/03/20(日) 16:43:46.59
だれもいないけど質問 hspファイルと同じフォルダに入れた画像ファイルをpicloadで呼び出しても いざ実行したとき[画像ファイルがありません]とでました。考える原因はなんでしょうか?
>>7 chdir dirinfo(0)
picloadn の直前に上記の1行を入れてもダメ?
状況がイマイチ伝わらないので…。
9 :
デフォルトの名無しさん :2011/03/22(火) 20:46:20.21
VBからHSPに乗り換え〜 オブジェクトIDってstat使って変数に入れなきゃならんのかー 新鮮w
>>7 拡張子はいってる?
あと、
"C:/nanka/gazo.jpg"
は
"C:\\nanka\\gazo.jpg"
っていうふうに/を\\に変えないといけない
使用するキーに関してですが stick a,15 if a&1:x-=3 if a&2:y-=3 if a&4:x+=3 if a&8:y+=3 これだと矢印キーで移動することになると思うんですけど これをWASDキーに置き換えるにはどうしたらいいんでしょうか? getkeyだとアルファベット文字指定はできるようですが・・・ 素人なので馬鹿な質問していたら申し訳ないです
stickじゃあ出来んよ。 諦めてgetkeyを使え。
もしくは、onkeyを使う方法なんてどう?
16 :
デフォルトの名無しさん :2011/04/18(月) 09:04:59.79
エクセルのマクロだと、F8を押す毎に1行ずつプログラムが実行されていく っていうのがあったんですが、HSPだとそういうのはできないですか?
>>16 デバッグウィンドウの表示をONにして停止ボタンを押してプログラムを一時停止にしたら
次行ボタンで行毎に実行って事なら可能
スクリプトの頭から一時停止させるならassert使う
18 :
デフォルトの名無しさん :2011/04/18(月) 12:39:43.02
ビープ音に関してですが #include "kernel32.as" beep 500,500 などとすると、鳴ってる間はそこで処理が止まっているようですが 止めない方法は無いでしょうか?
APIの仕様だから無理 Swaveとかの波形合成ツールで似た音作ってmmplayで流すとかで代用するのが楽
#include "d3m.hsp" #uselib "ntdll.dll" #func RtlInitUnicodeString "RtlInitUnicodeString" sptr,sptr #func ZwCreateFile "ZwCreateFile" sptr,int,sptr,sptr,sptr,int,int,int,int,sptr,int #func ZwDeviceIoControlFile "ZwDeviceIoControlFile" int,int,sptr,sptr,sptr,int,sptr,int,sptr,int #func ZwClose "ZwClose" int dim usDn,2 sdim Dn,16 cnvstow Dn,"\\Device\\Beep" RtlInitUnicodeString varptr(usDn),varptr(Dn) hFile=0 dim objAttr,6 objAttr=24 objAttr.2=varptr(usDn) dim ioStat,2 ZwCreateFile varptr(hFile),3,varptr(objAttr),varptr(ioStat),0,0,3,3,0,0,0 dim opt,2 opt.0=500 opt.1=500 ZwDeviceIoControlFile hFile,0,0,0,varptr(ioStat),$10000,varptr(opt),8,0,0 s=d3timer() mes "ピ" while s+opt.1>=d3timer() x+=ginfo_mesx pos x,0 mes "〜" await 50 wend ZwClose hFile
KeyHoleTVって最近知ったんだが、どういう仕組みなんだろうな。 そろそろ終了するみたいだけど。
23 :
19 :2011/04/19(火) 21:01:27.03
>>20 オーディオスピーカ無しでも鳴らせたかったので・・・
>>21 ありがとうございます
初心者なので意味はサッパリですが使うことはできそうです
24 :
デフォルトの名無しさん :2011/04/29(金) 18:33:24.73
初歩的な質問です。
RPGでは、よく村人などのNPCが画面を勝手に動き回っていますが、
あのアルゴリズムは、
>>13 のようにキーを設定してから、
変数aに、1〜8までの数字をランダムに吐かせることで動かしているのでしょうか?
HSPでandroidアプリが作れるようになるかもしれないとはすごいな 今でもCに変換してなんとかすりゃできるのかな
>>24 思いついたならやってみればいいと思うよ
ついでに言っておくとプレイヤーキャラとNPCは同じルーチンで動かす事もできる
箱を10個用意して、各箱に4種類づつリンゴを入れられる。 aの箱に何の種類を、個数を入れたか管理したいのですがどのようなプログラムを書けばいいでしょうか aの箱 ・リンゴ 5個 ・青リンゴ 10個 bの箱 ・リンゴ 5個 ・青リンゴ 10個 合計 リンゴ:10 青リンゴ:20 みたいな感じのを作りたいのですが
> 各箱に4種類づつリンゴを入れられる。 最大何個までとか、なんか条件がさっぱりわからんわ
その辺ちゃんと説明できたら自然に解決する問題
dim hako_a,4 dim hako_b,4 dim hako_c,4 dim hako_d,4 dim hako_e,4 dim hako_f,4 dim hako_g,4 dim hako_h,4 dim hako_i,4 dim hako_j,4
リンゴが何種類あるのか判んないってのがポイントだな
普通に a(n*2,hako)=syurui a(n*2+1,hako)=kosuu でいいだろ
どうして、リンゴなんですか? ブドウじゃダメなんですか?
もう一回まとめるわ俺の中でもわかんねえ 20個の箱を作りたい でそのうち6個は上限2つ。5個は上限4つ。残りは上限3つ。 で中に入れるものは12種類ある。 箱の中身は○が何種類で□が何種類って感じに表示したい
>>34 訂正
誤:箱の中身は○が何種類で□が何種類って感じに表示したい
正:箱の中身は○種類が何個で、□種類が何個って感じに表示したい
>>34-35 ぜんぜんまとまってねー!w
まず、20*12の変数を作れよ。
そこに、「入れる」の処理をしてから、
それぞれの和を算出すればできるだろ。
>>34-35 "1"〜"20"までの箱を作る。
"1-6"は空きスロットが2個
"7-11"は空きスロット4個
"12-20"は空きスロット3個
この空きスロット(計59)にA〜Lまでの12種類をはめる。
表示は
"1"の中身はAが1つ、Eが1つ
"2"の中身はGが1つ、Lが1つ
みたいな感じの認識でおk?
>>36 みたいに全種類ごとの数を保持するか
種類と数のペアを十分な数だけ保持すればいい
暇な奴ら…( ゚д゚)、ペッ
簡単な当たり判定を付けようと思って、if (enex=shotx)and(eney=shoty):goto *game_stop というような式を書き加えたのですが、弾が敵を素通りしていくだけで画面が停止しませんでした。 何がいけなかったのか、さっぱり分かりません。(*game_stopには、stopと書いてあります。)
>>40 弾の大きさは?
敵の大きさは?
どちらも、1pxじゃないんでしょ?
42 :
デフォルトの名無しさん :2011/05/03(火) 05:21:55.47
どうなの?
おはようございます。
>>41 弾も敵も32×32ピクセルで書かれたものをgcopyで呼び出しています。
とすると、XYの座標となる左上端の1ピクセルしかないかもしれませんです・・・
44 :
デフォルトの名無しさん :2011/05/03(火) 14:15:10.39
STGとかの背景の作り方が全くわからん
45 :
デフォルトの名無しさん :2011/05/03(火) 14:16:07.63
スクロールするやつね
comboxについての質問なんですが、選択肢の1つ目が選択されているとcomboxに指定した変数に0が代入されるんですよね combox a,150,"a\naa\naa" if a = 0 : b + 1 if a = 1 : b + 2 button "test",*test stop *test mes b if a=1で進めても表示される数字は1何ですがなぜでしょうか
俺も今実行したら、全部1になりやがった
プログラムって上から下にいくでしょ、aってのは、もともと0だから、その状態でifに行ってbが1になったんだと思う だから実行した瞬間には既にa=0でb=1になってるって事じゃないかな?
49 :
デフォルトの名無しさん :2011/05/04(水) 06:32:25.32
>>46 こうだろ。
combox a,150,"a\naa\naa"
button "test",*test
stop
*test
if a = 0 : b + 1
if a = 1 : b + 2
mes b
つーかこれ何がしたいのかわからん。
51 :
デフォルトの名無しさん :2011/05/05(木) 00:19:33.89
わからんね
そりゃそうだ。 ばかだから、不要な部分と思わしき所を勝手に削除して、こちらから見れば当たり前だろ(゚д゚)バーカって言うソースに改竄してるんだから。 おまえら、暇か?
暇です
【今週のお題】 お暇でしょうか? いいえ、○○です。
あえてケフィア
回答する側も一々ルール守れとか・・本家はマジで終わってるな。 なんで、あんなおこちゃまページにしたんだろうなデブ玉はw あと、昔の掲示板のリンク本家から消してくんねーかな。 隠れ掲示板として使ってやっからよ
一般掲示板と2chの区別も出来ない奴は2chだけに書き込んでりゃいいんだよ
荒んでるなw
ああ、つくづく俺はダメな奴だ・・・ シューティングゲームすら碌に創れねーとは・・・
本家はとっくの昔に終わってる。 て言うか、HSP自体がもう終わって
>>60 そこまでいわないでくれ
おにたまもC++変換がんばってるんだから
バカばっかだから 言語の問題では無く、OSとのパラメータのやりとりの問題だと気づかずに、ネタ発言してるクソをいたぶってるのがのさばってるスレ って事かな。
Norton Internet Security 2011について pcbnet2.hpiを利用したソフトをzipで圧縮、Lhaplusで解凍、ソフトを実行すると Nortonが危険度が高いファイルと判定して削除してきます 「活動->2個の処理を実行しました。」の欄を見てみると「イベント:何も処理しませんでした」と書いてあります 何故か、zipの解凍にLhazを使ったら削除されませんでした
>>63 それもさぁ、どっかのハッカー気取の厨房が
誰にでも作ろうと思えば作れる、しょっぱ〜いウイルスソフト作っちまったもんだからww
それからだったかなぁ 引っかかるようになったのはw
自慢げにインタビューに答えてたっけなwww
それもこれも、幼稚化を進めた・・(ry
そんな過去が・・・ 何人かのノートンユーザーにソフトを起動してもらって ソフトが良好判定になるまで待つしかないな
66 :
デフォルトの名無しさん :2011/05/11(水) 18:03:10.68
HSP厨はゲームが作れないんですか?
>>43 この式だと、1ドット分の大きさでしか当たり判定しませんね。
abs関数を使って、たとえば
hitx=abs(enex-shotx)
hity=abs(eney-shoty)
if (hitx<=32) and (hity<=32) :stop
みたいにするのはどうでしょう。
>>67 やってみましたが、今回も何故か当たり判定はないままでした。なんでなんだろう・・・
ちなみに自分と敵がぶつかった場合には、if (enex=mx)and(eney=my):goto *game_stopでいけます。
もともと、そのプログラムは衝突判定や移動処理が簡単ということでゲーム座標というものを使って書いていました。
(mx=6:my=13、Gamedot=32、if keydata&1:mx--、pos mx*gamedot,my*gamedot)
というような感じで、自分と敵の動きを小さな数字で管理して表示するときに32ドットを掛けるやり方で書いていたですが
弾を撃つスクリプトでは、ゲーム座標が使われてない部分があるせいか?弾と敵と自分の当たり判定がうまくいってないみたいです。
でも、スクリプトを見る限りは弾は32ドットずつ動くように書いたつもりですし、プログラムを実行してみても
自分の指定したとおりにちゃんと動いてくれてるので、それなのにどうしてダメなのか不具合の原因がよく分からない訳です。
キャラクタ間(自機,敵機,弾)の座標単位は統一したほうがよい どうしても今のまま行くならやっつけ対応になるが if (enex=shotx/32)and(eney=shoty/32):goto *game_stop 原因はenexが32分の1の値に対し、shotxの値が等倍の値だからだと思う title "enex="+enex+",eney="+eney+",shotx="+shotx+",shoty="+shoty とか入れてタイトルバーやデバッグウィンドウで調べてみるといい
ゲーム座標を使うのをやめてドット単位に統一したら、おかげさまで
if (enex=shotx)and(eney=shoty):goto *game_stopで当たり判定でました。
いろいろアドバイスありがとうございました。
でも
>>67 のスクリプトでは、素通りしてました。
プログラムって何が上手くいくかわからないものですね・・・
71 :
uy :2011/05/15(日) 03:00:02.74
ゲーム座標って何。なんか怖い 四角の当たり判定は o = じき e = てき if o.x < e.x + e.width && o.x + o.width > e.x && o.y < e.y + e.height && o.y + o.height > e.y あたり end だろ ちなみによく当たり判定が素通りする原因として、 ショットや敵の、動くスピードに問題だったりする 当たり判定が小さいのに、移動速度が速すぎると素通りする
おかげさまで、当たり判定がクリアできたのでゲームの大枠はほぼ完成しました。 入門書によりますと衝突判定が最後の1回だけだとキャラクターがすり抜けてしまう場合があるようで 全体に何回かgosub命令で呼ぶ必要があるようです。もっとも、redraw 0:color 0,0,0,:boxfの後の まだ敵が描かれてないときに当たり判定がでてしまうと、それ以降に描写される筈だったものが描かれずに すっ飛ばして終わってしまったりして、いろいろ面倒なことになっちゃってますが・・・ あと、思い通りにいかないことといえば、自分が想像していたものよりゲームが面白くなかったことでしょうか(笑)
73 :
uy :2011/05/16(月) 03:12:28.43
こわい 怖い 怖い 怖い 怖い 怖い怖い 怖い 怖い 怖い怖い 怖い こわい 怖い こわい 怖い 怖い こわい 怖い怖い こわい ごめんなさい
?
なあ、HSPをネットブックでやっている人いる?10.1インチ以下の画面でさ 使い心地はどう? やっぱり素直にノートPC買っとけというレベル?
最低、ノート。
77 :
デフォルトの名無しさん :2011/05/19(木) 18:46:18.01
HSPって ウィンドウも出ずツールバーにも表示されずPC起動したそばから起動するツールって作れるの?
スタンドアロンアプリが作れるだけで大満足です
>>75 マルチステートメントだらけの1画面プログラムか7行プログラムをするのならいざ知らず、
ふつうにプログラム組むだけなら、全然問題ない。
初質やネットで公開されてるスクリプトって、自由に使っても問題ないよね?
>>81 ここに書かれたモノなら、大丈夫だろうけど…
他サイトで公開されているモノは、利用者のモラルから
それぞれの「使用条件」などに従った方がいいと思う。
流石。バカしか居ない。w
ここで聞こうかと思ったけど、 半日考えたら、解決したわ・・・ 自分で考えることは大事やね
85 :
デフォルトの名無しさん :2011/05/24(火) 12:01:07.89
本当にHSPで デスクトップアイコンじゃなくすべてのプログラムから起動できて タスクトレイのアイコンで設定ができて ウィンドウ表示されずにツールバーにも出ないで動くツールが作れるんだろうな?
できる 君の技術と努力次第
結果的に出来ると作る過程が簡単かどうかは全くの別問題だからな
http://punk-peace.sakura.ne.jp/ RPG制作補助ツール「cheese」
Cheeseは、RPG制作の補助をする事を目的として作りました。
RPGを作る上で面倒臭いマップ、イベント、データ作成等のお手伝いをするツールです。
RPGツクール等の様にゲームエンジンは付いておらず、エンジンはあくまで
自分で作らなければいけません。
基本的は自分用に作ったので使いにくい点が多々あると思いますが、少しでもお役に
立てればと思い公開する事にしました。
なお、イベント等を全く利用せずマップのみを作成し、マップエディタとして
利用する事も可能です。
また、HSP2.61用ですが、ゲームエンジンのサンプルスクリプトも
ありますのでご活用ください。
89 :
デフォルトの名無しさん :2011/05/24(火) 19:20:41.48
初心者ですが質問です パラメータをメモリーノートパッドを使ったメッセージボックスの内容を 同じくメモリーノートパッドを使った文字列形変数に代入してmes命令を使うと 文字が表示されません。原因がわかる方教えてください
sdim a notesel a mesbox a sdim b notesel b button "",*c stop *c b=a mes b
サンプルあるからググれ
>>91 >85の
>すべてのプログラムから起動できて
がスタートメニューの事でいいなら全てサンプルは存在する
あとはそれらを組み合わせるだけ
94 :
デフォルトの名無しさん :2011/05/25(水) 19:13:19.52
久しぶりにHSPやろうと思って3.21と3.3b2を入れたが 昔のスクリプトがそのままじゃ実行できない・・・ 3.21は#Error 7 3.3b2じゃ#Error 27 3.21で配列の扱いが変ったのか・・・ 3.3b2の方は #define A 1 b=-A ってやるとエラー なんだこれ
図書館で本借りればええやん
ソースコンバータ2で変換してもだめなんか?
久しぶりにHSPを使うバカな奴のフォローをしてやるお前等カッケー。w
98 :
デフォルトの名無しさん :2011/05/25(水) 22:36:15.87
>>96 ん?
HSP3のソースだよ?
3.1までなら実行できたやつ
#defineで定義してるやつに-付けてるところ全部修正して
3.3b2で実行したら今度はアプリケーションエラーになりやがる
面倒くさがるな!
日本語でおk
#define A int(1)
#defineのは普通にバグだと思うからおにたまさんに報告すれ
そういえば配列って、 値を一度決めた後に数値を変化させようとしたらエラーがでたな・・・ 座標みたいにはいかんのかな?
>>103 その状況を再現できるスクリプトをくれ
エラーが出るってだけじゃ何も言えん
max=10 dim a,max n=1 if n=1:max=11 という記述をしちゃうとcntでエラー吐くみたい。 maxを10以下に変更するなら問題ないようだけど。
これは……
3.21/3.3βじゃ再現できなかった。
dim a,10 ;a.0〜a.9まで配列変数を確保 a.11=0 ;これは同次元配列の自動拡張が行われる(a.0〜a.11) a.0=0+a.12 ;これは配列の範囲外を参照するのでエラー であってるよね
109 :
デフォルトの名無しさん :2011/05/29(日) 18:13:25.53
>3.3b2じゃ#Error 27 これは中間コードの最適化機能がONだと発生 #cmpopt optprm 0 で、回避できたがバグっぽい >3.21は#Error 7 こっちはhgimg3の命令str2fvに問題ありそう 3.1と3.2で挙動が違う どっちも問題ある動作だが3.1だと最初の数回だけで収まる str2fv fv,a のaにちゃんと , で区切った3つの 数値がないとfvの値が安定しない ヘルプには特に注意書きなし
110 :
デフォルトの名無しさん :2011/05/29(日) 18:27:09.83
3.21と3.3b2は同じ動作 #include "hgimg3.as" hgini a="0" repeat hgdraw str2fv fv,a title str(cnt)+" ◇"+str(fv)+" ◇"+fv(1)+" ◇"+fv(2) hgsync 200 stick k,127 if k&128 : goto *owari loop *owari end
hsp3.2で使えて今も残ってるhspwave.asない?
モジュール変数って劣化インスタンスメソッドみたいなものですか?
当たり前なのか・・・
例えば配列に格納したデータを先頭から比較するとき
>>105 の後repeat maxのループ内部でa(cnt)を参照したら
>>108 なわけで
初めから最大の配列数で初期化しておいて、ループ数の方を調整するべき
dim a,max
len=max
if n!1 : len--
repeat len
; a(cnt)を参照するほげほげコード
HSPってオープンソースになるの?
awaitで微調整して効果音とアニメーションをぴったり合わせたのに 別のPCで動かしてみたらほんのちょっとだけど音と絵がずれた・・・
119 :
デフォルトの名無しさん :2011/06/03(金) 20:36:44.26
awaitは前回使われてから指定された時間を待つ 既に指定された時間を過ぎてたら待たない PC環境でawait 1で待つ時間は違う XPなら5〜15msぐらい await 10ぐらいにするとある程度安定するが正確に時間を計れない 時間を計測して合わせるべき
120 :
デフォルトの名無しさん :2011/06/03(金) 20:58:48.89
w=1 repeat c++ t = gettime(6) await w if t!gettime(6){;凄い適当な秒変り検出 color 255,255,255:boxf:color pos 0,0:mes "FPS:"+c c=0 } loop 自分のPC(XP)ではwを1〜15に変えてもFPSは64で変らない 16にすると40に落ちる
なるほどね!
c使いが紛れ込んでるな。(#^ω^)
d3timer 使ったほうが楽じゃね?
e3dにも入ってたような・・・
>>125 e3d を使うとリンクするライブラリが変わるから場合によるかも
e3dだとdirectxいるからそれだけのために必要って書くのもあれだからやめた方がいいか
いつになったら構造体が使えるのかね。
他の言語使えよ。
クリック(押し)の座標とクリック(離し)の座標をなんとかかんとかだった希ガス
132 :
デフォルトの名無しさん :2011/06/08(水) 00:56:33.39
>>130 ノートパッド起動してれば指定したファイルをD&Dした事になるよ
>>131 どこかに参考になりそうな物は無いでしょうか
ハンドル取得部分の変更で数時間悩むようなど素人なので…
>>132 MCP-MA7というソフトにD&Dしたいのですか実際にD&Dしたときとは違ってしまい
関連付け起動したときに出るエラーが出てしまいました
このソフトD&DかメニューバーのEdit→Addから以外では受け付けてくれなくて
不便なため上記の動作+ボタン操作当をしたかったのですが
分かりやすいサンプルがなかなか見つかりませんorz
大人しくC#でも使ってろよハゲ
137 :
デフォルトの名無しさん :2011/06/12(日) 06:23:57.33
>>136 スタートアップにショートカット入れるのはだめなのか?
そもそも
>>85 が何を言ってるのかわからない・・・
>>138 スタートメニューの全てのプログラムにショートカットを作成
タスクトレイにアイコン表示、アイコンクリックでメニュー表示
ツールウィンドウで起動するアプリ
という事だろ
>>136 この2週間検索すらしなかったのか?
とりあえずHSP-NEXT池
>>139 検索するようなやつがこんなところに書き込むもんか。
入門書を2冊読んだ程度の人間が、次にステップアップできる書籍やいいサイトはありませんかね・・・?
2冊読んだら、後は作りたいものを作るだけでは……
143 :
デフォルトの名無しさん :2011/06/12(日) 20:05:00.96
ちょっと古いバージョンの質問なのですが3.1ではsetmodとdelmodのパラメータがなくなったと書いてあります 3.1ではモジュール型変数の再設定をするにはどうすればいいのですか?あと、delmodのパラが設定できなくなったことで できる時とできない時の違いを教えてください
144 :
デフォルトの名無しさん :2011/06/12(日) 20:09:47.03
147 :
デフォルトの名無しさん :2011/06/19(日) 19:36:20.95
3.1だとまったく問題ないのに3.0で実行すると「内部エラー」と出てしまいます。 これは何が原因なのでしょうか?わかる方御願いします。ちなみにOSはXPです
プログラムが原因
149 :
デフォルトの名無しさん :2011/06/19(日) 22:33:32.73
HSPでスクレレを使ってツールを作っています。 DBから読みこんだデータをいままでのものすべてをlistboxに表示したいの ですが、listboxに最新のデータ一つしか表示されません。 どのようにすればいいのでしょうか? sql_open "kodukai.db" sql_q "CREATE TABLE IF NOT EXISTS [ログテーブル] (ID INTEGER PRIMARY KEY, [内容])" sql_q "SELECT * FROM [ログテーブル]" count = stat repeat count listboxtext="ID=" + sql_v("ID") + ", 内容=" + sql_v("内容") sql_next loop
おそらくプラグイン dll の有無だろう
151 :
デフォルトの名無しさん :2011/06/19(日) 22:43:23.83
一応dllもあって起動するんですが・・・
スクレレは知らんのだけど listboxtext="ID=" + sql_v("ID") + ", 内容=" + sql_v("内容") これを listboxtext += "ID=" + sql_v("ID") + ", 内容=" + sql_v("内容") + "\n" にしてみたら
>>147 それだけでわかるわけねーだろ。
エラー番号とかも書けよ。
HSPか・・・懐かしいなww
俺は懐かしいどころか現役という
初歩的な質問です。 みなさんは、プログラムをかくとき自分で0からつくりあげていくのか、 それとも、他人が他言語などで書いたソースをベースに自分仕様にしてるのだろうか?
>>156 両方
自分の理解出来てる事なら自分で組み立てるし
理解が及ばない事は他人のソースを見て解釈する事もある
>他人が他言語などで書いたソースをベースに自分仕様にしてるのだろうか? これはWinAPIとか使う時ぐらいだな
>>158 APIは本当にそうだな。
さっぱり分からんもんがゴロゴロある。
hspapi.asみたいなのでてほしい
>>160 それで一体どんなものを希望してるんだ?
いっぺんもぐらたたきでも作ってみようと思ったんだけど、アルゴリズムはどうすればいいのかわからんかった。 で、プログラムをネットで調べてみたけど、C言語で書かれたソースではやっぱり何を言ってるのかようわからん。 それならば、BASICで書かれたソースを見つけてHSPの命令に一文ずつ書き直せば簡単できるんじゃないか? と思ったのだが、そんなに簡単にいくもんなのだろうか? プチコンのプログラムソース見て思ったんだけど同じBASIC系言語らしいのに、HSPとはなんか違うような感じがする・・・
163 :
デフォルトの名無しさん :2011/06/26(日) 23:45:24.54
>>162 移植の方法は、どのような言語でも、フローチャートに書き直す。
フローチャートに従って、新コードに書き下す。
やっぱ、プログラミングには、フローチャートとかメモとか細かい作業が必要なんだな・・・ 簡単であまり長くないプログラムなら、皆適当に思いつきで書いてるもんだと思ってたよ。
個人で組むなら、どうでも良いよ。 でも、組織立って組んでるなら、同じファンクションやプロセジャーをコーディングしない為にも、文書化しとく必要は有るんじゃね?
166 :
160 :2011/06/27(月) 00:42:01.51
基本的なのからいうと iniとか hspapi@wikiとか作って拾ったり、作ったwin32apiを使ってる命令を一つのasファイルにしたら楽なんじゃないかって
HSP って user32.as とか kernel32.as とか付属してなかった?
関数名だけわかっても定数で詰まるから さくらさんとこの定数ツールみたいなの標準で同梱するか 誰かHDL用にAPIと定数の関連マニュアル作ってくれないかな? 個人で作るには量が膨大すぎるけど
>>168 他の言語用のマニュアル使えばいいじゃない
>>169 その手間を少なくする為の話してるんだよ
フローチャートとかセンター試験くらいでしか使った事がない
HSPでいろいろ作れようになれば基本情報技術者試験受かりますかね?
HSPはHSPの本を読みまくれば、HSP使いにはなれるが、 基本情報技術者試験は、基本情報の本を、読んで、ときまくら ないと、と受からない。俺はファーストフード店に入り浸って、 旧国家2種(基本情報相当)を取ったが、2年で、20kg太 ってしまった。その体重を肥満外来に通って、1年半で、もと の体重に戻した。ファーストフード勉強法は、太るぜ。受かった 時の俺は、HSPは、まったく知らなかった。プログラムの問題 の参考にはならんかもしれん。でも、HSP知ってると、win dowsプログラマーになれる。
基本情報に実際のプログラムの問題なんてほとんどないよw
>>162 以前、3の倍数の時アホになり、5の倍数の時弱気に吠える犬になり、3と5の倍数(15の倍数)のときヒャッハーするプログラムをc++だかで見たんだが、おまじないが多くて困った。
結局、理解するのを止めた…
「言語」って言うくらいだからなぁ 単語だけ他の言語に訳しても意味ないんだよ、文法も分かるようにならないと
>>173 不自然な改行なので縦読みを探したが見つからない
>>173 さんは、書き方に、特徴があるので、
あなたを知っている人は、匿名で書いても、あなたが誰だか分かってしまうから、
2ちゃんねるに書きこむの時は、気をつけた方が、いいかと思うよ。
親の、具合は、もういいのかい?
自分は、HSPを2度挫折して今年の2月に基本情報の勉強を始めました。 しかし、擬似言語で行き詰ったので、再びHSPを始めたらついにHSPのプログラムを完成させることができました。 たぶんCASL2や基本アルゴリズムを学んだことが、自分の血となり肉となったのだと思います。 でも、基本情報で学んだことの多くは忘れてしまっているみたいなので、またやり直さなきゃいけなくなった。 そして基本情報の勉強をしなおしているうちに、今度はHSPの文法を忘れていっているようです。 人生は、3歩進んで2歩下がるですね。3歩進んで2歩進めるような頭のいい人が羨ましいです。
そういうスタンド攻撃があってだな・・・
>>178 親の具合は、ブログを参照してください。
くわしくは、ブログを見ればいいです。
更新しています。
文章は2ちゃんの法則で、こういう書き方
になっています。ご指摘ありがとうございます。
日本語として何を言っているのか分からない
buffer 1,100,100 //gsel 0 screen 0,640,480,0,(ginfo(20)-ginfo(10))/2, (ginfo(21)-ginfo(11))/2 stop gsel付けないと表示されないんだけど、これって正常だと思うか?
buffer 1,100,100 logmes "ginfo(10)="+ginfo(10) logmes "ginfo(11)="+ginfo(11) logmes "ginfo(12)="+ginfo(12) logmes "ginfo(13)="+ginfo(13) gsel 0 logmes "ginfo(10)="+ginfo(10) logmes "ginfo(11)="+ginfo(11) logmes "ginfo(12)="+ginfo(12) logmes "ginfo(13)="+ginfo(13)
ginfo(10)と(11)がぶっ壊れてるね (4)〜(7)もイカレてる
仮想画面だから不定なのは正常
187 :
185 :2011/06/28(火) 19:48:02.17
すまんバッファの座標が取れてただけだなorz gsel 0は当然あるべき
HSPで見下ろし型(スーファミのラングリッサーみたいな感じ)のSRPG作りたいんだけど ソース公開してる参考になるサイトってある? 斜めでマスの数が少ないのは嫌なんだ
>>188 HSP3.2プログラミング入門の本の中に、
シュミレーションRPG 草原の攻防という
ソース付きのサンプルがあるが、それじゃだめかな?
>>189 やっぱりネット上ではSRPGのソース公開はあまり無いみたいですね・・・
一度プログラミングの本買ってバージョンが変わってて失敗したことがあるんだ
プログラミングについての本あまり信用しないようになってしまったんだが・・・
少し怖いから、本屋に行って中身みてくるかもしれない。
情報ありがとう!
screen 2,640,480,4 サイズが固定されないんだけど(WIN7) GetWindowLong&SetWindowLongでやらないと駄目なの?
193 :
デフォルトの名無しさん :2011/06/29(水) 20:19:13.81
(WIN7)のバグだと 思われる。
>>191 遅くなりました!これも参考にしてみます!
いつかはオリジナルのが作れたらいいな〜
わざわざありがとうございました!
講座でも始めようかな
螺旋の騎士のようなフリーの良作期待してますよ
入門的な講座よりも、ゲームでよく使われるスクリプトの大全集みたいなサイトがあると助かる クックブックもリファレンスブックも逆引き辞典もあんまり自分には役に立たなかったもんで・・・
どうも、ありがとう。でも、どちらも既に知ってるサイトでした・・・ 個人的には、体力のバーの表示の仕方とか、弾を全方位に撃つ方法とか、横アクションゲームの基礎とか これができると、アレを作れそうだなみたいな、そういう技術が知りたいかなぁーと コンテストに応募してくる人は、どこで習ってるのかなぁ?やっぱり他の言語で取得した知識なのかな?
201 :
192 :2011/06/30(木) 06:18:44.53
こんにちは、初めましてです。 HSP初めて触る少し質問をさても頂きたく思います。 HSPの前進させるキー操作のところを、加速度センサーを使った、 リアルタイムでの歩行動作をさせることは可能なのでしょうか? プログラムの書き方しだいかもしれませんが、どうぞご回答よろしくお願いします。 環境としては、OSはvista 今のところはHSP3です。
>>202 どうもありがとう。初見のものもありました
紹介してもらった感想としては、やっぱりゲームスクリプト集のような超便利なサイトや書籍はないみたいですね
天は自ら助くる者を助くという言葉がありますけど、プログラムの世界でも初心者に楽して上達させてはくれないみたいです・・・
でも逆に、初心者がポンポンと判子絵のようにゲームを作ることが本当に良いことなのかということも考えてしまった
ただでさえフリーゲームがネットに溢れてるのに、ちっとも面白くないゴミのような作品が増えて誰が得をするのか?と
ネットは玉石混合と言われてるけど、さらに砂漠の中から指輪を拾うような状況になるのはよくないことだし
お使いイベントや王道シナリオが陳腐化し、フリーの絵や音楽を目にするたびにウンザリしてしまうんじゃないかと思った
hsp3imp.dllの質問です。 _hspprm@16( 0, 0, 0, NULL ) _hspprm@16( $102, 0, 0, "test.ax" ) _hspini@16( $100, 300, 200, 0 ) _hspexec@16( 0,0,0,0 ) _hspbye@16( 0,0,0,0 ) こんな感じでHSPスクリプトを実行できるのは分かったんですけど、 どうやったらUWSCの変数を参照させられるでしょうか。 メッセージのやり取りでも出来ればいいんですが、UWSC側でメッセージを受信できないので、 直接変数を渡してHSPスクリプトで書き換えたいんですけど。 UWSC以外でも、hsp3imp.dll で呼び出したスクリプトとやり取りする方法はあるんでしょうか。 変数や関数呼び出しで。
>>203 あなたの言う「加速度センサー」とは何か?
キーボード・マウス以外の周辺機器をHSPで利用するには、専用のDLLが必要。
あなたの加速度センサーのDLLがHSPで利用可能か私には分からない。
「リアルタイムでの歩行動作をさせる」とは何を動作させるのか?
あなたはパソコンにロボットなどを接続してその制御をしたいのか?
あるいは3D・2Dゲームのキャラクターを画面の中で動かしたいという事か?
>>205 あなたの質問はおそらくこのスレ向きではない
>>203 の書き方が翻訳したみたいだったから合わせた
209 :
デフォルトの名無しさん :2011/07/06(水) 21:15:57.88
へえ
多次元配列の初期化代入はどうやるの 一次元なら a = 1,2,3....でできるけど・・・
多次元配列の初期化代入は多分不可能だがこういう事なら出来る dim a, 3, 2 x = 0, 1, 2, 3, 4, 5 memcpy a, x, 24, 0 repeat 2 cnt1 = cnt repeat 3 mes a(cnt,cnt1) loop loop あまりややこしい事はしない方が結果楽だけどな
>>211 あーやっぱ反復構造利用しないとダメですか
ありがとうございました
a(0)=1,2,3... a(1)=1,2,3... a(2)=1,2,3... 初期化代入って呼ぶのかどうか
>>213 それって今でも出来たっけ?
昔はできた気がするけど…
HSPのテストバージョンにHSPDishがついてたんだけど これでどうやってAndroidで動かすんだ??
>>214 できなかったわ知らなかった
というかどうなってんのこれ
dim arr, 3, 3
arr(0) = 1,1,1
arr(1) = 2,2 //これ以上多いとエラー
arr(2) = 3 //これ以上多いとエラー
repeat 9
mes ""+arr( cnt/3, cnt\3 )
loop
dim arr, 3, 3 arr(0) = 1,1,1 // arr(x,0), arr(x+1,0), arr(x+2,0)に代入 arr(1) = 2,2 // arr(x,0), arr(x+1,0)に代入 arr(2) = 3 // arr(x,0)に代入 repeat 3 mes ""+arr(cnt, 0)+" "+arr(cnt, 1)+" "+arr(cnt, 2) loop
>>217 おかげで添字が逆だったのを思い出した
dim arr, 3, 3
arr(0,0) = 1,1,1
arr(0,1) = 2,2,2
arr(0,2) = 3,3,3
repeat 3
mes ""+arr(cnt, 0)+" "+arr(cnt, 1)+" "+arr(cnt, 2)
loop
配列は苦手だわ めまいする
添字が逆なのはマジ嫌がられ
221 :
デフォルトの名無しさん :2011/07/10(日) 12:42:19.60
え?
配列初期かもできない分言語なんかやってるひといるのw
#module #deffunc foo int a return #deffunc bar int a return #global 上記のようなものがあるとして foo という関数を module 外から見えなくする方法があれば教えてください
無いんじゃね
HSPにそんな高度な機能はないだろ。
知れば知るほどいやになる言語hsp だが残念なことにpygameもstaerrubyも糞過ぎてこれしか選択肢がない
選択肢が偏りすぎてる件
>>224 同名の関数があるのが困るってだけならこれでおk
#define foo foo_no_hontou_no_namae_ha_nagai
#deffunc foo_no_hontou_no_namae_ha_nagai int a
return
高度な機能は亡き者にする姿勢ってどうにかならないのかな〜 プログラムに慣れて来たら卒業したくなる言語って悲しいんだけどw
DXライブラリはヴィジュアルスタヂオの知識が必要 lgpは手軽だが画像読み込みばぐや画面サイズに制約があり微妙 pugameはideと日本語の扱いがロクにできない starrubyだかdxrubyはエラーログすらでねえ
VS使える言語はいろいろ便利でいいよな
一体HSPに何を求めてるんだ。
ラベルの撤去
>>224 #deffunc local foo int a
>>235 消えるには消えるけど@モジュール名付けないといけないから嫌なんだよな
おまけに local してない同名の命令が先にあると結局だめだし
自分の書いたプログラムみてたら単調な命令ばかりで行数が無駄に多いことに気付いた 頭のいい人間なら熟考した上でrepeatや配列をつかったエレガントな文を書くんだろうな でも俺アホだからそういうの思いつかないんだよな。だからソースは他人に絶対見られたくない おまえらはどうよ?
単調な命令ばかりで行数も五千行になったけど別に「見られたくない!」とまでは思わないなあ 変数の単語の使い方が間違ってたら恥ずかしいな、とは思うけど ぶっちゃけ変数だけでもかなり色々出来るしわざわざムリしてまで難しい命令を使う事は無いと思うよ 誰かに教える事を前提とするならちょっと考えなきゃいけないのかもしれないけど
他人の書いたソースは無駄も含めて色々勉強になる
ソースを公開してくれるのはありがたい
知らない命令つかってたりしてな
無駄が多いと気付いたんなら
>>238 のスキルが上がってきた証拠じゃね?
じきに local がずらっと並んでエディタがどこまでも横スクロールするようになる
242 :
デフォルトの名無しさん :2011/07/15(金) 22:45:24.70
ふ〜ん
無駄が多いと気づいたなら、書きなおして無駄を減らせばいいだけでしょ
>>238 ループでまとめたほうがすっきりすると思っていたが、
マクロ生活のマクロ見て愕然とした。
シンプルな記述で羅列したほうがめちゃめちゃすっきりしてた。
動いてるところだけ見てもコードの汚さなんて分からないんだから 無駄でも冗長でも別にいいんだよ、モジュール化に限界のあるHSPでは それは十分許される
みんな優しいな
プログラムってさ、書いてるうちにブラックボックス的なコードになってたりするよね?
248 :
デフォルトの名無しさん :2011/07/17(日) 22:44:00.86
hgimg3で、objchildにより何かの子になっているobjectが delobjで消去できないのは仕様でしょうか? ドキュメントにあるとおり、delobjに親を指定すれば子もろとも消えるのですが 公式に打ち上げれば修正されるのでしょうか?
hgimg3は資料が少なすぎて使う気になれない ユーザーを増やそうという気概も感じられない そんなhgimg3に手を出したのなら 公式のサポートなどあてにしない孤高のプログラマとなり 自分の知恵と力で道を切り拓くべき わりとマジで
250 :
デフォルトの名無しさん :2011/07/19(火) 01:16:38.68
プログラミング全般に言えることなんだけど ネット資料がいろいろと少なすぎるから 結局金払ってマニュアル本なり英語のサイト漁らないといけない
ぷよぷよのようなゲームを作ろうと思っているのですが、 ↑キーを押した時に時計回りにブロックを回転させる操作をしたいと 考えています。 しかし、1度↑キーを押しブロックが時計回り(左上)へ移動した後に もう一度↑キーを押すとそのまま左上へ行ってどこかへ行ってしまいます。 ブロックの中心を軸にその周りを回る方法を知りたいのですが、 参考にするといいサイトなどあるでしょうか?
254 :
デフォルトの名無しさん :2011/07/20(水) 21:43:26.01
早く誰か答えなさい…
255 :
デフォルトの名無しさん :2011/07/20(水) 21:55:22.20
ソースコードをupすれば、誰か答えるだろう…
256 :
253 :2011/07/21(木) 10:30:11.14
ソースコードはとあるサイトにあったソースを元に改ざんしているのですが まだ調べが甘かったようです。 質問しておいて失礼ですが、 気になるサイト(ソース付き)を見つけたのでひとまず そのソースをいじりながら勉強をしてみます。 お騒がせしましたm(_ _)m また行き詰ったらお邪魔しにくるかもしれませんが・・w
コピペで試行錯誤するのは止めとけ 技術は全く身につかないし、時間の無駄
258 :
デフォルトの名無しさん :2011/07/21(木) 19:35:07.24
hspletRPGを作りたいってとき セーブデータってどこに保存されるの・・・?
ぷよぷよよりテトリスの方がソースたくさんネット上に置いてありそうだけどな 構造も似てるし参考にはなるだろ 知りたいのは落ちてくるブロックの回し方なわけだし まあそこで苦労してるようじゃ連鎖過程でさらに苦労しろうだな
newmod してできたモジュール変数のインデックスを知る方法はありますか?
>モジュール変数のインデックス なにそれおいしいの
>>261 newmod を繰り返すと配列見たいのがどんどん伸びていって delmod をすると歯抜けになる
その後で newmod すると抜けてた部分が埋まるんだよ
そうなると新しく newmod された部分がどれなのか調べるのが面倒なんさ
みんな無限ループエラーの時のデバックどうやってる? ゲームがフリーズするから普通に変な動きした時よりエラー箇所探すのめんどくさい
265 :
260 :2011/07/23(土) 14:21:52.52
>>264 探していたのはまさしくコレです
ありがとうございました
266 :
デフォルトの名無しさん :2011/07/23(土) 22:04:05.56
>>263 wait,awaitなんかの待機処理入れて動作見たり、ループ脱出条件の変数を出力して監視したり。
268 :
デフォルトの名無しさん :2011/07/24(日) 20:18:02.50
MIDI音源の再生について質問です。 前のパソコンでも使っていたシーケンスソフトで快適に再生できていたファイルがもたつき、音が途切れ途切れになるなどの症状が出ていて困っています。 重い常駐ソフトも特になく、ソフトからエクスポートしたファイルをWindowsMediaPlayerで再生してもスピードが0.3~0.4秒前後不安定(遅い)で、以前は正しく発音されていた部分が途切れたり消えたりします。 ソフト上でも同様です。デバイスの確認や診断も行なってみましたが、異常なし ・現在 OS:Windows7 Home Premium 32-bit (6.1, Build 7600 ) Procerror:AMD Athlon(tm) II X2 255 Processor (2 CPUs), 3.1 GHz Memory:2048MB RAM Page File:786MB 2795MB availableDirectX:DirectX 11 Sound Devices Description:スピーカー(Realtek High Definition Audio) Driver Name:RTKVHDA.sys HW Accel Level:Basic EAX(tm) 2.0 Listen/src:No, No I3DL(tm) Listen/src:No, No ------------------ ・以前 OS:WindowsXP Home Edition(5.1, Build 2600)SP2 Procerror:Intel(R) Celeron(R) CPU 2.80GHz Memory:256MB RAM Page File:274MB 337MB available DirectX:DirectX 9.0c Sound Devices Description:Realtek AC97 Audio Driver Name:ALCXWDM.SYS HW Accel Level:Full EAX(tm) 2.0 Listen/src:Yes, Yes I3DL(tm) Listen/src:Yes, Yes お願いします
メディアプレーヤーでそれってことはHSP全然関係ないよね ここで聞く事じゃないと思うけど XPで使ってたソフトそのまま使ってるの? OSアップデートしたら過去アプリ使えなくなるのは珍しい事じゃないよ 互換モードで使ってみ それ以上のことはグーグル先生に
windows7だとareo周り? 後はDirectSound関係かな?
>>188 2007年のプログラムコンテストに反乱軍記っていうソフトを作った人がいたよー
repeat〜wait 10〜 loopと書くよりも、label〜wait 10〜 goto labelで記述した方が 体感的にキーの入りがいいように感じるのですが、みなさんはどうでしょうか? 世間的にgoto文は多用すべきでないと言われてるので、repeat文で書いてます・・・
HSPだけに限って言えばrepeat〜loopは意外と使い難い局面が多々あるので gotoと場合によって使い分ければいい 俺はメインループはgotoでサブルーチン内でだけrepeat〜loopを使うようにしてる ちなみに処理速度だけならrepeat〜loopの方が若干速いからキー入力云々は気のせいだろ
モジュール変数を知って今まで苦労していた部分が楽になった が、今まで楽に出来ていた部分で苦労するようになったw
苦労した成果 #module hoge a, b #deffunc swap_var var x, var y, local z z=x : x=y : y=z return #modinit int a_, int b_ a=a_ : b=b_ return #modfunc hoge_print mes strf("a=%d b=%d", a, b) return #modfunc hoge_swap_ var a_, var b_ swap_var a, a_ swap_var b, b_ return #modfunc hoge_swap var target hoge_swap_ target, a, b return #global newmod x, hoge, 1, 2 newmod x, hoge, 3, 4 newmod y, hoge, 5, 6 hoge_swap x.1, y.0 foreach x hoge_print x.cnt loop hoge_print y.0
>>272 カウンタが有るか無いかぐらいの差しかないよ
てかゲームで使うならawaitな
>>274 多次元配列は一次元配列より倍近く重いから一フレームで大量に扱う物にモジュール変数は不利になるから注意
>>275 モジュール変数というかメンバ変数?を使いこなせるなら
もうC++やC#を使った方が楽かもなw
278 :
272 :2011/07/26(火) 22:09:16.96
タイトル画面でスタートキーを押したにもかかわらず、受け付けてくれないことが多々ありまして、 出鼻を挫かれたプレーヤーが少しイラっとされるんじゃあないかと思ったんですよ・・・
>>272 repeat〜loopはgotoでループ抜けるとネストが残ったままになるから、
gotoでループするとかdoとかwhileを使った方がいいらしいな。
280 :
デフォルトの名無しさん :2011/07/27(水) 00:43:30.28
ついでに氷もたのむ
>>278 それはループ処理かキー入力取得自体に問題があるんじゃないのか?
30fps程度で動かしてたとしても、非同期のキー入力を取りこぼす事は普通ありえないぞ
gotoしてる文、ループ時の条件文がスルーされてるってオチだったりして
ネストが残るてどういう意味なん? メモリにゴミでも溜まるんかい?
repeat -1 gosub *nest_houti loop *nest_houti stop ; repeatブロックの中のまま、gosubで飛んだまま
285 :
デフォルトの名無しさん :2011/07/27(水) 20:12:50.69
え?
それはいいんじゃね? つかHSPにも関数ブロックみたいなのがほすい。returnし忘れとかやめて〜
>>284 の何が危ないのかわからないんだったら、
gotoによるループをオススメする
ミスを誘う仕様っぽいけど今更どうしようもないだろw
gosubでreturnしないなんて、初心者の漏れでもやったことない
他人のコード理解しないままコピペしてたら起こり得る
自分のスクリプトを確認してみたら、gosubで飛んだラベルから条件分岐で別のラベルにgotoする処理もあるんだけど その場合もネストがなんたらで危ないのか?別に、エラー吐いたりフリーズしたり不具合もでたことないんだけど・・・
grotateで画像が乱れるとお悩みのあなたに embed_grotate !
これがあればアルファチャンネル付き画像だってグリグリ回せちゃいます
今なら外部DLL一切不要
一家に一台 embed_grotate !!!
● 特長
grotate とそのまま置き換え可能
外部DLLが不要
画像が乱れにくい
アルファブレンドコピーができる
アルファブレンドコピーモードの際に半透明合成時のブレンド率も適用される
(アルファチャンネル付きの画像をフェードイン、フェードアウトできる)
● grotateと異なる点
転送先、転送元いずれかがパレットモード時には動作しない
grotateよりも低速(約80%〜60%)
アルファブレンドコピーモードの際の動作が異なる
● 使い方
1.embed_grotate.hsp を HSP の common フォルダにいれる
2.embed_grotate.hs を HSP の hsphelp フォルダにいれる
3.#include "embed_grotate.hsp" と記述する
4.grotate のかわりに embed_grotate と記述する
プラグイン作ったので宣伝してみました
http://simasuzu.web.fc2.com/
>>291 ややこしいがそのgoto先の中でreturnしてればおk
自分が見易い形に整理していった結果そうなったならそれでいいんだろう
#cmpopt varinit 1 ってみんな使ってない? 人様のモジュール使うとき自前で変数の初期化するの面倒なんだが
296 :
292 :2011/07/29(金) 17:29:14.21
ver1.4 できました 処理速度が grotate とほぼ同等になりました 描画領域の計算が正確になりました(タイルパターンの描画にも使えるようになりました)
297 :
デフォルトの名無しさん :2011/07/29(金) 23:49:51.81
ここは宣伝スレじゃないんで^^
>>283 これを実行してみればわかる
i=0
*main
repeat
i++
cls
mes i
goto *main
loop
せめてwaitを
いらないだろ
looplev sublev 地味すぎるシステム変数たち
302 :
272 :2011/07/30(土) 18:33:55.24
repeat stick a if a=16:goto *main wait 10 loop というふうに書いてました。あまり良くないようなのでgoto文に変えることにします。 質問に答えてくれた方々、どうもありがとうございました。
>>302 お前全然意味分かってないだろw
goto使うなっつってるのにwww
304 :
デフォルトの名無しさん :2011/07/30(土) 21:35:00.05
repeatをgotoに変えるんだろ repeat使うなら *main mes b b++ repeat stick a if (a&16):break wait 1 loop goto *main こんな感じ if (a&16) にしたのはa=16じゃスペース以外も押されてるとtrueにならない 後stickやgetkey命令は先行入力が効かないみたいだから wait 10だとポンと押して離すとwait中に入力終わっててキー検出できない
まじgoto廃止しろよ・・・
>>305 goto廃止したら、for、whileといったマクロも使えなくなるぞ。
んなことより、goto使うとおかしくなるrepeatを無くせよ。
基本的な文法くらい素でサポートしろよなw 今更だが、マクロで拡張するという考えがまずかった
308 :
272 :2011/07/31(日) 10:12:26.83
>>304 ありがとうございます。この問題は解決できました。
でもrepeat文の使い方がまずい文が他にもたくさんあって、
今の自分の力では、もう手がつけられなくなっちゃいました・・・
即席でギャグとして作ってみたw #undef repeat #undef loop #undef break #undef continue #undef cnt #define repeat(%1=-1,%2=0) %trepeat %i=0%c%s1%s2 *%i%c cnt=%p3+%2%c if (%p3>=(%p2)) & ((%p2)>=0):goto *%i%i0%c #define loop %trepeat *%o%c%p4++%c goto *%p1%c*%o%o0%o0%o0%o0 #define break %trepeat goto *%p1%c #define _continue_ cnt+1 #define continue(%1=_continue_) %trepeat %p5=%1-%p3:goto *%p2%c これならネストの問題もなく動くでしょ
これが速攻で組めるとは… 俺もまだまだだな
cだなc
312 :
デフォルトの名無しさん :2011/08/04(木) 23:24:27.01
ちょっとお聞きしたいのですが、HSPってもしかして本来飛ばすはずの次の処理とか結構読んじゃったりする? ってスレ流し読みした感じだともしかしてgoto使ってるのがわるいのか 処理順でもバグってるのかこれ・・・
314 :
デフォルトの名無しさん :2011/08/07(日) 06:16:46.71
sageてしまったのでage
短絡評価はもともと無いよ
自分の思うように動かないと 処理系のバグだと考える 実に初心者スレにふさわしいレス …みんな一度は通る道だよね
俺も幼稚園の頃はそうだったわ
swbreak?
320 :
デフォルトの名無しさん :2011/08/07(日) 15:10:28.83
>>315 ありませんか・・・すいません。
間違いようがない処理のはずなんですがなぜかバグる。
色々略してますが
if flag = 0{
処理
flag =1
}
程度の物なのになぜかflagが1の時にも処理が実行されてしまいます
>>320 実行可能で現象が再現する最小のソースを用意してくれ
flag が local で宣言されてるとかじゃね? local は毎度初期化されるから
タイプミスとか いや、笑いごとでなくて
ちょっともう一度最低限に削ってテストとタイプミスチェックしてみます だめならコード張ってみます
randomize flag = rnd(2); 0=白,1=黒 dim arr,8,8; 8x8の二次元配列 i = 0: j = 0: xx = 0: yy = 0; ;配列を0で初期化 repeat 8 repeat 8 arr(i,j) = 0 j+=1 loop i+=1 j=0 loop ;配列を0で初期化終了 arr(3,3) = 1: arr(4,4) = 1;白駒配置 arr(4,3) = 2: arr(3,4) = 2;黒駒配置 *game redraw 2 cls 0
i = 0: j = 0: x = 20: y = 20 repeat 8 repeat 8 pos x,y mes arr(i,j) y+=50: j+=1 loop x+=50: y=20: i+=1: j=0 loop if xx!="":pos 420,100:mes xx if yy!="":pos 470,100:mes yy if flag = 0: pos 450,50: mes "白のターンです" if flag = 1: pos 450,50: mes "黒のターンです" redraw 1 onclick goto *click_wait stop
*click_wait xx = mousex yy = mousey i = 0: j = 0 while(i<=8) while(j<=8) if xx > (j*50) & xx < ((j+1)*50) & yy > (i*50) & yy < ((i+1)*50){ if arr(i,j) = 0{ arr(j,i) = flag + 1 if flag = 0 { flag = 1 }else{ flag = 0 } } } j+=1 wend i+=1: j=0 wend goto *game
実際にバグるというのは、なぜか普通にクリックする分には0→1or2に変わればそれ以上変わらないのですが、 ダブルクリックや高速でクリックしまくると1→2→1→...と切り替わってしまったりするんです
クリックしたときに押下状態を更新する。 メインループでその状態を見るって感じでいいかと。
>>328 > if arr(i,j) = 0{
> arr(j,i) = flag + 1
ダブルクリックとか関係なく
この部分 i,j と j,i の順序が変わってるからじゃね?
331 :
デフォルトの名無しさん :2011/08/07(日) 16:32:07.39
>>330 うわ・・・馬鹿すぎるorz
すいません、その処理のほうのjとiを入れ替えた後、その条件式のiとjを入れ替え忘れていました
本当にご迷惑をおかけしてすみませんでした ありがとうございました
なんかほのぼのした
まあ解決してなにより
HSPなんかやるよりもC#で書いた方が余程マシじゃね? HSPなんか何にも良いことないじゃん。
ああ、そうだね
言語仕様や開発環境でHSPが勝てる点は一切無いだろうね でもC#は非ネイティブという致命的欠陥がある
HSPはエディタが前触れも無く異常終了するのが難点
HSPだって非ネイティブじゃないの?
ワロス
>>337 3.3rc1にしなよ
エディタもバージョンアップしてるから
たしかに公式掲示板の質問でそれやるならHSP使わない方が はるかに楽だろうというのはよくあるけどな
module 内で初めて実行されたかどうかのフラグを使いたいんだけど下の使い方でいいの? 今のチェックをすり抜けてるだけで実際には未初期化の変数使ってるから後のバージョンでエラーにされる? #cmpopt varinit 1 #module test_module #deffunc dummy ; varinit 1 のエラー回避用 is_initialized=0 return #deffunc run_once ; この関数が一回だけ呼ばれるようにしたい if is_initialized : return ; varinit 1 のとき関数 dummy を消すとここでエラーになる mes "initialize" is_initialized=1 return #deffunc hoge run_once mes "hoge" return #deffunc huga run_once mes "huga" return #global hoge huga hoge
>>342 考え方は○ですが dummy を一度呼んでおきましょう
#global
dummy
hoge
huga
hoge
入門書では教えてないような命令を多く使ってるのね。 これで初心者って、みんなすごいね!
>>344 いろんな命令を使ってみるといいよ
慣れてきたら使わずに書くほうが難しくなるよ
module とか使わずにプログラム書ける人すげーって思うもん
こんなのは #deffunc 使わないとかえって難しい ; ハノイの塔を解くプログラム hanoi 4, "A", "B", "C" stop #deffunc hanoi int disc, str from, str to, str free if disc<=0 : return hanoi disc-1, from, free, to mes strf("disc %d : from %s to %s", disc, from, to) hanoi disc-1, free, to, from return
>>334 C#なんかやるよりもC++で書いた方が余程マシじゃね?
C#なんか何にも良い事ないじゃん。
じゃあC++やればいいじゃんw
そういえば、5年位前にネットで7行くらいのテトリスみたことあったけど HSPだと何行くらいかかるんだろうな
テトリスならHSPの弱点が影響しにくいから 他言語とそんなに違いは出ないかと
>>343 ありがとうございます
一度 dummy を呼ぶようにします
>>350 ソース解説なんぞいくらでも転がってるからがんばれは移植できそうだよな
時間掛かりそうだなあ・・・
353 :
デフォルトの名無しさん :2011/08/09(火) 13:49:24.88
>>351 moduleを別ファイルにしてるなら
そっちにdummyを追加な
includeすれば実行されるし
354 :
デフォルトの名無しさん :2011/08/09(火) 22:41:43.14
おれを無視するなよ・・・
夏休みどすな
357 :
デフォルトの名無しさん :2011/08/12(金) 12:20:49.69
ですねw
盆休み保守
なんでか、盆休みのほうがかきこみすくないね
>>360 おつかれさん
機会があったら使ってみるよ
362 :
デフォルトの名無しさん :2011/08/16(火) 12:35:27.48
オッサン達は帰省やら家庭のことでむしろ忙しいのかもしれぬ。 コンテストの投稿者みてたら、キャリア5年前後の10代が多いようだ。 ベーシック(HSP)は、オッサンホイホイだと思っていただけに以外だった。
コンテスト期間の後半を待ってみ オッサンがいっぱい来るから
>>363 おっさんならまず「BASIC」でググるような気がする・・・
そして互換BASICに流れる気がする・・・
見た目はあんまりBASICっぽくないよな 泥臭さはBASICより酷いが
セーブがうまいことできないけど やりようによっちゃ普通のRPGみたいにできるもんだね
notesaveとかbsave使えよ
そこはvsaveだろ
vsaveっていう命令もあったのか。標準命令じゃなかったので知らなかった。 便利そうだから今度使ってみる。サンクス。
皆さんは、モニタの画面解像度をどのくらいにしてますでしょうか? 自分は、1027x768が丁度いいと思っているのですが、昔のHSP製のゲームの場合 ウィンドウが小さくなってしまって遊びづらい物も数多くあります。 (とはいえ、画面の解像度をいちいち800x600に変更したくはありませんよね?) これからゲームを作る場合、スクリーンのサイズをなるべく大きなものにして 32x32で描いていたキャラクターを倍にしたほうがよいのでしょうか? あともう一つ気になったのですが、さらに高解像度にしたところ画像が歪んで見えました。 (アイコンが横長だったり、縦長になったりなんとなく比率が違うように感じました。) 将来的には、どの解像度を基準にしてプログラムを作ったらよいのでしょうか?
>>371 幾つかのウィンドウサイズに変更可能にしておいてユーザに選ばせるのが一番楽
373 :
668 :2011/08/18(木) 16:28:13.44
668ってなに?
コンテストスレで使ったコテの消し忘れだな
376 :
デフォルトの名無しさん :2011/08/21(日) 14:46:28.40
へえ
377 :
デフォルトの名無しさん :2011/08/21(日) 22:11:52.15
test
mes "test"
379 :
デフォルトの名無しさん :2011/08/22(月) 21:55:14.26
test
そろそろsageる事くらい覚えたらどうかね
>>342 は dummy をユーザーが呼び出す可能性を考えると
is_initialized@test_module = 0
;〜〜〜〜〜〜〜〜〜〜〜〜〜↑↓別ファイル(でなくてもいいけど)
#cmpopt varinit 1
#module test_module
とする方がより安全かなと今思った
382 :
デフォルトの名無しさん :2011/08/25(木) 16:25:30.48
復活!
385 :
デフォルトの名無しさん :2011/08/28(日) 21:58:03.04
へえ
386 :
忍法帖【Lv=2,xxxP】 :2011/08/28(日) 22:04:50.85
mes "test"
テストって何のためにやってるの?
勉強した内容を理解してるかの確認のためじゃね?
_______ __ // ̄~`i ゝ `l | / / ,______ ,_____ ________ | | ____ TM | | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>> \ヽ、 |l | | | | | | | | ``( (. .| | | | ~~ `、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二='' ヽヽ___// 日本 .______________ __ |韓国はなぜ反日か? | |検索|←をクリック!!
今HSPでメトロノーム作ってるんだけど、音の間隔が安定しなくて 全然使い物にならない・・・
wait とか await だけだとバラつくよ
await使ってる 他になんか間隔あけれる命令ある?
>>388 勉強的な理由→勉強できたかの確認
プログラミング的な理由→バグの洗い出し&改良点の確認
>>393 いっそ
#uselib "winmm.dll"
#cfunc global timer "timeGetTime"
みたいにしてtimer()で時間を取り出して、
現在時間-開始時間がなんとかミリ秒の整数倍なら云々といったルーチンはどうだい?
内部で間隔を開ける発想のawaitとかと違って正確にリズムを刻める
音ゲーづくりにも役立つと思う
397 :
393 :2011/09/01(木) 01:25:34.42
>>396 ごめんなさい
ぼくがまちがってました・・・
_______ __ // ̄~`i ゝ `l | / / ,______ ,_____ ________ | | ____ TM | | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>> \ヽ、 |l | | | | | | | | ``( (. .| | | | ~~ `、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二='' ヽヽ___// 日本 ______________ __ |韓国はなぜ反日か? .| |検索|←をクリック!!
そんなのいちいち指摘しなくてもいい気がするけどね
イライラ迷路を作ってるけど、あたり判定をする命令が書けないorz
>>400 当たり判定用の buffer を作って
pget すればおk
>>400 キー操作でマウス動かせるソフトでズルできないようにすればももっと完璧だな
>>393 WM_TIMERを使うとか?
正確とは言い難いけどなw
返信してくれた方ありがとうございます
>>395 鳴ボタン押した時間取得して、
それから設定時間経過したら音を鳴らすってことですよね?
で、次は音鳴らした瞬間の時間から設定時間まで
の繰り返しってことですよね?
>>396 申し訳ない
>>403 なるべく精度高めたいからなぁ…
参考にしてみます
>>404 >次は音鳴らした瞬間の時間から設定時間までの繰り返し
それじゃあwait使うのと大して変わらんよ。
やるならこんな感じ
#uselib "winmm.dll"
#func global timeGetTime "timeGetTime"
step=50
timeGetTime : time=stat + step
while
await 1
timeGetTime
if stat >= time{
time+=step
cls
mes i
i++
}
wend
最初に時間を取得したら
あとはその時間にひたすら加算し続けて比較って言うのが一番正確かな?
桁溢れだけには注意が必要だけどな。
406 :
395 :2011/09/01(木) 23:33:06.06
>>405 短いループ一回ごとに呼び出して経過時間の差分が超えてるか判定を行って云々
・・・の方が良いような気がするんだけどなあ
まあメトロノームなんて組んだこと無いから良くは知らんがw
>>404 作ってみた
#include "d3m.hsp"
mmload "tick.wav", 1
tempo=240 ; 一分間に240回
tempo_count=0
base_time=d3timer()
repeat
cur_time=d3timer()
spend_time=cur_time-base_time
if spend_time>=tempo_count*60000/tempo {
mmplay 1
tempo_count++
if tempo_count>tempo {
tempo_count=1
base_time+=60000
}
}
await 1
loop
await版とtimeGetTime版を同時起動してもずれはわかんなかった わかるほどずれるもの? #include "kernel32.as" repeat beep 440,30 await 60000/240 ;240回/分 loop
>>408 ずれが累積していくから
5分の曲で1秒ずれるとかじゃないかな
演奏に使うには致命的やね
>>406 409も言ってるけど、誤差が蓄積していくからなぁ。
await使った場合と大差なくなる。
そもそもズレ分をどうやって評価してるの? テンポが120(のハズ)の曲と同時再生して、とか 市販のメトロノームと同時に使って、とかなら そっちのソースの方ほうを疑ってもいいんじゃないか?
楽器弾く人ならすぐ気付くよ 「なんかズレてる」って
まぁどうがんばっても正確な「メトロノーム」は出来んだろうな。 絶対どっかでズレるだろ。
本当に正確ならタイトルバーをドラッグしただけでずれるということは有り得ない
物理的な道具の方が便利なケースもあるってことだな・・・
四捨五入
>>415 マルチスレッド化するプラグインを使えば大丈夫
これを実行してみれば分かるが await 1 で待つと 15ms くらいの誤差は覚悟しないといけない await 0 だと CPU 1コアが100%負荷になる(awaitですぐ他のプロセスに順番が回るので100%とはいっても普通に作業は可能) #include "d3m.hsp" repeat title strf("fps=%d", d3getfps()) await 32 // 0 のとき fp=2600くらい、1〜15 のとき fps=64、16 のとき fps=40、17〜32 のとき fps=32 loop
420 :
415 :2011/09/02(金) 23:11:57.06
waveOut系のAPI使えば簡単だろうな、バッファが空になった時点で メッセージなりコールバックなりが来るから HSPで使えるかは知らん
>>421 いけるんじゃないか?
メッセージが飛んでくる度にバッファにWaveデータ書き込めばいいわけだし。
問題は質問者にそのルーチンを組めるかどうかだなw
mmload "正確なタイミングで音を繰り返す巨大ファイル.wav" mmplay これで完璧だな。
>>423 最初にこっそり巨大メトロノームファイルを作ってリピートさせればズレが少なくて済むかも
いやネタじゃなくてマジで
>>424 リピート再生だと、その都度誤差が出るんじゃねーの?
hspogg.dllを使えば大丈夫なはず
最近勉強し始めたドが何個あっても足りない初心者ですが… AとBのHSPプログラムを同じ窓で合体実行って出来ますか? 今スロットゲームのリール1を完成させた所で リール2を場所ずらして1と合体させられるか調べてるんですが 検索ワードに困ってるというか、出てきてもまだ多くが出来ないというか…
↑の最後の文、多くが理解出来ないの間違いでした;
こういう質問にどう見事に返す人がいるのか見守ることにする
exec命令使え
カスカスな質問でしたか… 出来るか出来ないかだけでもいいのでご教授願いたいです;
omg
>>430 あ、ありがとうございます!
今さっきexec試してみてました(別窓になっちゃいましたが…w)
なんとか同じ窓で開けるように頑張ってみます
実際は
>>430 のexec命令を使うよりも、プログラムを見直して(作りなおして)
並列処理させられるようにしたほうが、質問者の意図したプログラムになると思う。
それぞれのリールについてフラグを立て(0-停止, 1-回転中 2-減速等)管理し、
ボタンが押されたらそれに対応する動作をするようにすればいいんじゃないかな。
>>434 やっぱりそうですよね…
まだ長文に慣れてなかったので同じ窓で起動出来れば編集しやすい気がしまして;
ご教授ありがとうございました
>>435 まずは1つのリールを動かせるようにしてみて、
それが出来ているのなら、2つ同時に止めるものでもいいから作ってみてはどうかな?
ステップアップしていくことが大事だから、慌てずゆっくりとやればいいと思う。
>>436 ありがとうございます
イメージばっかりが沸いていきなり飛ばしてコピーした文でやってたので
436さんの言う通りにまた初めから身につけるようにやってみたいと思います
始めて2日目ですが本当コツコツが大事な事に気がつきました
イメージが形に出来るようになるまで頑張ります!
数年ぶりにインストールしたんだけど HSPTVが見れないんだけど バージョン3.2で、3.3RC1がないから再生できないとエラーが出る
439 :
デフォルトの名無しさん :2011/09/08(木) 13:37:47.73
へえ
>HSPTV部門の作品については、HSPTV!ブラウザで配信されていますので、お手数ですが最新版のHSP3.3RC1をダウンロードしてご覧ください。 ってコンテストのトップページに書いてある
どなたか、mp3とかで次のようなやつを作ってください。 ・曲の頭と尻に1秒(出来れば時間指定)の無音部があるようにする。 もともと無音部が長ければカットし足りなければ付け加える。 無音部の音圧レベルが指定できるとGood。 ・曲の出だしはフェードインし、終わりはフェードアウトするようにする。 フェードイン、フェードアウト、それぞれの時間幅を指定できると very Good
443 :
デフォルトの名無しさん :2011/09/13(火) 20:55:04.42
じゃあ、甘えついでに。 ノーマライズも含めてゲインの調整もできるようにしてよ。 もうちょいいろいろ機能をつければ、500円ぐらいなら有料でもOK 利用者けっこういると思うよ。 1万人いれば500万円のおこづかいだ。やってみてよ。
>>444 先に500円くれたらフリーソフトの紹介するよ
知らなかったけど、フリーソフトであるの? 自分は今は波形エディタ使ってやっているんだけどめんどい。 なんとか自動でみんなやってくれるやつないかなあ、と思って。
つかスレチ
つーか馬鹿だなこいつ。
449 :
デフォルトの名無しさん :2011/09/14(水) 00:17:10.60
曲の頭に拍手のSEが流れてライブ音源風になるってソフトが昔あったな なつかしい
450 :
デフォルトの名無しさん :2011/09/14(水) 14:15:58.30
通常dialogはリターンなど無いと 先には進めませんが 表示させたままで切り捨てる こと出来ませんか? メッセージを出しっ放しにしてたいのです ウィンドウでもいいのですが。 execでテキストはなしで。
screen命令でウインドウ複数作れるから メインの処理とは別にメッセージ用のウインドウ作ればいい 対象のスクリーンを切り替える gsel の使い方もヘルプで読んどき
452 :
デフォルトの名無しさん :2011/09/14(水) 22:49:41.32
screen だしてどうにかしないと処理停止 したままですよね? メイン処理はどうやって出したscreen を無視したらいいのですか?
gselで描画先を切り替えて何とか出来ると思ってたんだがそうじゃないのか
>>452 止まらないよ
screen 1
x=rnd(640),rnd(640)
y=rnd(480),rnd(480)
vx=rnd(10)+1,rnd(10)+1
vy=rnd(10)+1,rnd(10)+1
repeat
repeat 2
x(cnt)+=vx(cnt)
y(cnt)+=vy(cnt)
if x(cnt)>640 : vx(cnt)=-abs(vx(cnt))
if x(cnt)<0 : vx(cnt)=abs(vx(cnt))
if y(cnt)>480 : vy(cnt)=-abs(vy(cnt))
if y(cnt)<0 : vy(cnt)=abs(vy(cnt))
gsel cnt
redraw 0
color : boxf
color 255 : circle x(cnt)-10, y(cnt)-10, x(cnt)+10, y(cnt)+10
redraw
loop
await 20
loop
メインルーチンを複数動かすのではなく メインルーチン ある条件ならgoto *scmsg メインルーチン *scmsg screen 2 mes "tojiro" 閉じる押すまで出したまま また別で条件があうたび メッセージを出したいのですが。 例えるならスロットで当たりが出るたび 当たりの時間やコイン数を ポップアップさせ閉じるまで残したい 10回当たったら10個出したいのです
dialogだと止まるから、dialogっぽいモノをscreenで作って gselで元の窓に戻れってことでしょ
>>455 こんなもんか?かなり邪魔になるんだがw ログ表示みたいにしたほうがよさげ
#const POPUP_NUM_MAX 100
dim popup_visible, POPUP_NUM_MAX
dim popup_wnd_id, POPUP_NUM_MAX
repeat POPUP_NUM_MAX
popup_wnd_id.cnt=cnt+072
loop
repeat
stick key
if key & 256 { // マウスクリックするたびポップアップさせる
if ginfo(2)=0 {
repeat POPUP_NUM_MAX
if popup_visible(cnt)=0 {
popup_visible(cnt)=1
screen popup_wnd_id(cnt), 100, 100
button gosub "消えよ", *popup_button
break
}
loop
}
}
await 20
loop
*popup_button
erase_id=ginfo(2)-072
popup_visible(erase_id)=0
gsel popup_wnd_id(erase_id), -1
return
#include "hgimg3.as" dmmini dmmload "A.ogg" , 1 , 0 dmmplay 1 stop これを実行すると音がずっとループ再生されてフリーズしてしまいます 1回だけ鳴らしたいのですがどうすればよろしいですか?
dmmload使った事無いんだけど、パラメータはちゃんと通常再生になってるね 何が悪いんだろ とりあえず stop するんじゃなくてサンプル通りにループで待って様子を見てみ? *www dmmstat a,0,16 ; 再生フラグを取得 dmmstat dd,1,$100 ; 再生フラグを取得 title "PLAYING="+a+"/"+dd await 20 goto *www
>>457 ありがとうございますo(^▽^)o
でもcnt+072が理解出来ません(-。-;
>>460 #const POPUP_NUM_MAX 100
dim popup_visible, POPUP_NUM_MAX
dim popup_wnd_id, POPUP_NUM_MAX
repeat
stick key
if key & 256 { // マウスクリックするたびポップアップさせる
if ginfo(2)=0 {
repeat POPUP_NUM_MAX
if popup_visible(cnt)=0 {
popup_visible(cnt)=1
if popup_wnd_id(cnt)=0 : popup_wnd_id(cnt)=ginfo_newid
screen popup_wnd_id(cnt), 100, 100
button gosub "消えよ", *popup_button
redraw
break
}
loop
}
}
await 20
loop
*popup_button
erase_wnd_id=ginfo(2)
repeat POPUP_NUM_MAX
if popup_wnd_id(cnt)=erase_wnd_id : erase_id=cnt
loop
popup_visible(erase_id)=0
gsel popup_wnd_id(erase_id), -1
return
462 :
デフォルトの名無しさん :2011/09/18(日) 04:03:41.66
公式掲示板は日に日に荒んで行くなw 公式より2chの方がまったりしてるとか貴重だわ
何せ自称正義の味方が一杯いるからなw 自分ルールで素人のガキによってたかって文句つけてりゃ満足なんだろ
船頭多くして船山に登る
>>463 あんまし公式掲示板見ることないからな・・・
大抵ググれば解決するし、掲示板見るときも検索すれば大体分かるし
リアル小中学生が質問する→暇人が速攻でいちゃもんつける→質問者逆切れ→暇人大喜び の黄金パターンが確立されてる
HSPDXFIXでes_getbuf命令で表示中の画面をキャプチャしたいんだけど真っ黒な画面しか取得できません。 サンプルの es_getbuf -1 bmpsave "capture.bmp" 以外に記述しないといけない命令あります?
試しに es_getbuf -1 の行消して実行してみ
es_getbuf はDirectXのバッファを指定する命令だから 普通にHSPで描画した画面を保存したい場合には必要ないよ
471 :
デフォルトの名無しさん :2011/09/19(月) 00:15:16.53
へえ
472 :
468 :2011/09/19(月) 00:48:05.68
>>469 真っ白なbmpができるだけです。
>>470 DirectXで描画した画面のキャプチャ目的です。
で、windows7のサブPCだとちゃんとキャプチャできるのを発見。
XPのメインPCだと真っ黒(というかclsでクリアした色)のbmpができるだけです。
HSP本体もHSPDXFIXも同じバージョンなので考えられるのは
OSとDirectXのバージョンによるものかと・・・。
473 :
468 :2011/09/19(月) 07:00:32.71
原因はわからないままだけど とりあえず手持ちのPCどれでもキャプチャできるスクリプトができたので解決しました。
2chのdatを取得するテストプログラムを作ってるんですが スレのアドレスをdatのアドレスにする時正規表現で変換しようと思い、replaceで置換したのですが、うまくいきません とりあえず、必要な部分のソースだけ あらかじめinputでurl1にスレのURLを代入します これを実行してもurl2とurl3の内容が同じになってしまいます url2 = replace(url1,dat_url1,"/",,,) pos 0,25 mes url2 url3 = replace(url2,"\d{10}","dat/$&.dat",,,) pos 0,45 mes url3
書き忘れてました;; 1行目に↓が入ります dat_url1 = "/test/read.cgi/"
"\"を渡すには・・・ url3 = replace(url2,"\\d{10}","dat/$&.dat",,,)
478 :
デフォルトの名無しさん :2011/09/21(水) 23:59:12.79
test
479 :
デフォルトの名無しさん :2011/09/24(土) 02:48:26.46
481 :
忍法帖【Lv=5,xxxP】 :2011/09/25(日) 09:39:31.49
test
"を文字列で表すには? """だとだめなんです
\"
485 :
デフォルトの名無しさん :2011/09/30(金) 00:00:30.65
486 :
デフォルトの名無しさん :2011/10/06(木) 21:18:26.41
( ゚д゚) ・・・ ・・・( ゚д゚ )
くそすれ
488 :
デフォルトの名無しさん :2011/10/08(土) 16:51:46.50
え?
敵にダメージ与えた時に白く光る効果を作りたいけど 敵と同じ形の白い画像用意するしかない?
color 255,255,255 : boxf x1,y1,x2,y2 で出来る
すごく・・・四角いです・・・
分かりやすい効果だな
ではmrefとpokeでVRAMに直接
バッファで敵の上に白を塗る。 背景色以外の色を白に変えたものをバッファ間で用意しておけばいい。 ただ、これだと効率が悪いんだよな。
だなw
497 :
デフォルトの名無しさん :2011/10/09(日) 14:06:18.34
そうか?
498 :
デフォルトの名無しさん :2011/10/09(日) 18:49:05.06
HSPでフォント一覧を作りたいのですが、一覧はできたのですが表示されるフォント名が 「HG-正楷書体」とかではなく「HGRSKP」となってしまいます。「HG-正楷書体」にしたいのですがどうやればいいのですか?
>>498 hsp enumfonts でググればサンプルが見つかるよ
>>493 あれVRAMじゃなくてただのDIBビットマップだよなw
#cmpopt varinit 1 は #module や dim で作成してない変数をチェックするようにしてほしいな 代入式でいくらでも誤記できてしまう
502 :
デフォルトの名無しさん :2011/10/13(木) 21:40:57.90
あると助かるな
503 :
デフォルトの名無しさん :2011/10/13(木) 21:53:20.79
ツール使って作ったゲームは総じて糞 プログラミング言語使わずに作ったゲームは総じて糞 これだけはガチ
>>503 プログラミング言語やツールなしにゲームを作る方法教えて
>>505 プログラミング言語もツールも使わずにゲーム作るのは無理。
ム板だからパソコン上で動くゲームと仮定して回答したけど、
紙のトランプとかそういうトリッキーな回答を期待してる?
使った道具でゲームの面白さが変わると本気で信じてる奴ってまだいるんだな
ゲームというのはルールあるところに常に存在する影のようなもの
509 :
デフォルトの名無しさん :2011/10/14(金) 17:02:49.48
>使った道具でゲームの面白さが変わると本気で信じてる奴ってまだいるんだな 21世紀に入ってから10年以上経つのにまだこんな事を言う奴がいてびっくり 一瞬2ch初期の過去ログでも見てるのかと目を疑った まぁIT関係から10年近く離れてたら最近の状況は分からないのかもな
10年前から無職なんですね・・・
511 :
デフォルトの名無しさん :2011/10/14(金) 17:11:37.99
なるほど、
>>507 は10年前から無職なのか、納得
507「使った道具で遊園地の面白さが変わると本気で信じてる奴ってまだいるんだな」 ってノコギリとトンカチで遊園地作るタイプだな。 ゲーム開発でも同じだということに気付いてない。
これがこの板に棲むという伝説の池沼か HSPなんてターゲットにしてないで他逝って下さいよw
ノコギリとトンカチで作られた遊園地って絶対楽しいだろ
ツール使わないって、手作業でディスクを1bitづつ磁化しながらバイナリ作るとか?
ツクール()のことだろw
ゲーム作ったことないのでよくわからんが ここ10年でゲームの面白さとツールの関係が何か大きく変化したのか?
最近のゲームは大規模複雑化してるから、ツールの支援を得ながらチームで作ることが多いと聞くね でもそういうゲームが面白いかどうかは知らない
質問です。 次のスクリプトで、「開く」ボタンを複数回押すと動作が不安定になります。 これは、関連付けしてあるアクロバットリーダー側の問題でしょうか? button "終了",*owari button "開く1",*open_pdf button "開く2",*open_pdf stop *open_pdf objsel -1 if stat=1 { pdf_file="pdf_01.pdf" } if stat=2 { pdf_file="pdf_02.pdf" } exist dirinfo(1)+"\\"+pdf_file if strsize>-1 { exec dirinfo(1)+"\\"+pdf_file,16 } stop *owari end
同じpdfを複数回開く意図がわからんな
>>519 連打したときだけおかしくなるのか
時間を空け(pdfを開き終わってから)てもおかしくなるのかが分からない
400文字の"0"と"1"だけの文字列A・Bを xor演算した新たな"0"と"1"だけの文字列Cを作るという処理を なるべく高速に処理するにはどのようなスクリプトが良いでしょうか 現在は 1:A・Bから32文字づつ取り出す 2:A・Bを数値に変換し、xor演算して 数値dを求める 3:e=strf("%08x",d) とし、16進数文字列eを求める 4:eを1文字づつ、switch構文で"0000"〜"1111"に切り分けて連結する 5:eをCに加算する 6:1〜5をA・Bから文字が取り出せなくなるまで続ける という方法を行なっているのですが、 256*1024回ほどループさせるのに10分程かかります。 なにか速度を早くする良いアイデアはありませんでしょうか
>>522 1バイトずつpeekで読み込んでxor、pokeでCに書き出すを繰り返し
>>522 長さが4の倍数ならこれでおk
実行時間12秒
もっと高速化したいならDLL作ったほうがいい
src_len=400
sdim A, src_len+1
sdim B, src_len+1
sdim C, src_len+1
repeat src_len
poke A, cnt, rnd(2)+48
poke B, cnt, rnd(2)+48
loop
mes A
mes B
mes strf("%02d:%02d:%02d", gettime(4), gettime(5), gettime(6))
repeat 256*1024
repeat src_len/4
lpoke C, cnt, (lpeek(A, cnt)^lpeek(B, cnt))+0x30303030
loop
await
loop
mes strf("%02d:%02d:%02d", gettime(4), gettime(5), gettime(6))
mes C
ありがとうございます。 早速試してみます。 DLLというものを全く知らないので、よろしければ参考になるサイトを 教えていただけませんか
527 :
526 :2011/10/16(日) 21:19:15.60
>>527 すいません、ちょっとうまく動かないようなのですが、
>>525 の
>>lpoke C, cnt, (lpeek(A, cnt)^lpeek(B, cnt))+0x30303030
という部分は
lpoke C, cnt*4, (lpeek(A, cnt*4)^lpeek(B, cnt*4))+0x30303030
ですよね
ありがとうございます。 やってみたところ爆速になりました。 今までこういう命令は使ったことがなかったので参考になります。 +0x30303030 という部分が自分にはまったくわからなかったのですが、 この数字は数値に足すと文字コードになるようなマジックナンバーなのでしょうか??
文字コード表とかググればすぐわかると思うが 0が$30で1が$31だからxorで消えたのを4文字分まとめて足しちまえってことだね 上にある+48も同じ意味 でも個人的には+じゃなくてorにしないとなんか不安
532 :
デフォルトの名無しさん :2011/10/20(木) 20:44:50.70
不安か?
(´・ω・`)うん
534 :
デフォルトの名無しさん :2011/10/21(金) 15:32:06.64
質問です。 mes 命令で書いた文字を背景色をpget命令で取得し同じ場所に書いて消してから 別の文字を書いているのですが 完全には消えずに中身がくりぬかれて 枠のように残ってしまいますなぜでしょう? 文字サイズを大きくしたら残った部分がみえました。
確かフォントをある程度大きくすると勝手にアンチエイリアスが効くんじゃなかったかな
536 :
デフォルトの名無しさん :2011/10/21(金) 15:46:57.58
回答ありがとうございます どこかに答えがありそうなのでその線で調べてみます
いえいえ
文字を消すならboxfやgcopyで塗りつぶした方が速いと思うぞ
539 :
デフォルトの名無しさん :2011/10/22(土) 06:37:27.00
へえ
540 :
デフォルトの名無しさん :2011/10/22(土) 23:18:40.28
そうなのか
541 :
デフォルトの名無しさん :2011/10/23(日) 00:26:16.39
うん
いいえ
キー入力で画像を回転させるにはどうしたらいいんですか?
>>543 buffer 1, 100, 50
celdiv 1, 100, 50, 50, 25
font msgothic, 50
mes "画像"
*hoge
stick key, 1|4
if key & 1 : degree-=3
if key & 4 : degree+=3
gsel 0
redraw 0
color 0, 0, 0 : boxf // 画面消去
color 255, 255, 255
pos 100, 50
mes "矢印キー左右で回転"
pos 320, 240
celput 1, 0,,, deg2rad(degree) // 画像を回転させて描画
redraw
await 10
goto *hoge
ありがとうございます!
546 :
デフォルトの名無しさん :2011/10/25(火) 07:17:16.51
exrand HSPというプラグインを探しているのですが、既に非公開のようなので、似たような乱数取得プラグインがあれば教えてください
>>546 おま・・・元からプラグインでメルセンヌツイスタの乱数生成命令あるだろ・・・
>>547 ケータイからなのでID違いで失礼します。
65536までの数値を指定したいのですが、既存のもので可能ですか?
どっかにMT乱数のモジュールがあったような気がする
気がするね
rndf_geti
554 :
デフォルトの名無しさん :2011/10/26(水) 05:22:48.02
IDなどないよね
>>548 rnd(32768) + rnd(32768) でどうだ?w
>>555 そんな野暮なことするなら素直に
rnd(1)*32768+rnd(32768)
にしろよ
>>555 足し算すると偏りがすごいことになるぞ
サイコロ二つ振ったら7が一番出やすくなるのと一緒
double(rnd(32768)) / 32767 * 65536
(rnd(256)<<8)|rnd(256)
560 :
デフォルトの名無しさん :2011/10/28(金) 16:15:52.05
e?
561 :
556 :2011/10/28(金) 19:59:01.38
>>559 バイナリレベルではそれが一番早そうだな
あんまり深く考えずに書いたのが申し訳ないくらいだ
(rnd(32768) *2)+ rnd(2)
563 :
556 :2011/10/28(金) 23:20:39.58
なるほどね
564 :
デフォルトの名無しさん :2011/10/30(日) 14:08:01.48
おお
次の質問者どぞ
(´・ω・`)ショボーン
キャラチップ・マップチップなどをbufferに置かず、 配列や変数などに代入して保持する方法で楽なのってありますか? それとも、バニラの状態でやるよりDirectX拡張プラグインでもつっこんで 管理した方がやりやすいですか? ご面倒ですがお教えいただけたら幸いです。
568 :
567 :2011/10/31(月) 12:36:53.74
追加説明 やろうしていることはキャラチップやマップチップ、Uiなどをオブジェクトとして登録しておいて 一括管理するという方法をとろうとしているのですが、 例 <name=”tree" src="tree01.png"> みたいな感じで、あとからsrc="tree02,png"みたいに代えれたり、 あと、サイズも48*48とか64*64とかごちゃごちゃなものを同様に管理できたらなぁ〜って思いまして・・・ buffer上での管理だと、枚数が少なかったり、サイズの大小の組み合わせが面倒だったりで・・・
バッファの数は、通常使用する分には無限にあるよね? それでウィンドウIDを指定して(100番からは背景画像、200番からは設置物等) 管理するのが簡単だと思うんだけどなぁ。
>>569 えっ!無限につかえるんですか?
0〜31までだと思っていましたw
これは2.XX系の仕様だったんでしょうかね?
無限に使用できるならなんとかなりそうです
ありがとうございました。
hspってxmlを楽に扱えるライブラリとかあんの?
572 :
569 :2011/10/31(月) 21:08:32.20
>>570 2.Xはあまり使ったことが無いので分からないけども、
今の最新バージョンではウィンドウIDは、ほぼ無制限に指定できる。
(ウィンドウIDに指定できるのは0以上の整数だけどね)
>>572 ありがとうございます。
このあたり、制限がないのは使いやすいですね
ただ、bmp意外の画像ファイルを使う場合には
いちいちbufferサイズを指定してやらないとだめそうですね
(表示画面内に収まるキャラチップなどならいいですが、スクロールさせる画面背景などの場合とか・・・)
>>573 サイズが大きいものは、ウィンドウサイズを指定しないとうまく読み込まれなかった気がする。
でも、bmp以外はそうだっけなぁ。
pngは使ってみたことがあるけど、サイズ指定しなくても別に問題なかったよ。
>>574 色々ありがとうございます
最終的にはSUZUKAみたいな処理が出来ればいいんですけどね
これから、色々頑張ってみます〜
pngって標準で使えるんだったっけ picloadじゃ無理じゃなかった? わざわざimgloadを拡張して使ってた経験あるんだけど
png標準は無理だわ、何かincludeして使ってたんだっけな
たぶんmod_img.asだ
mod_img.asはIEが最近のバージョンになってるとちゃんと動かない 少し前のHSP製のゲームでpng画像表示できなくなってるのがある GDI+対応のプラグインの方が良いと思う
580 :
デフォルトの名無しさん :2011/11/01(火) 14:44:13.89
良いと思うね
absとabsf… うヴぉぁぁあ
モジュール変数の数には限りがありますか? newmod実行しまくると3万くらいでエラーが出ます
583 :
デフォルトの名無しさん :2011/11/04(金) 20:12:19.35
内緒
スパゲッティになってないかしきりに不安なので 一度他人に見てもらいたいのですがこのスレが最適ですか? ちなみに324行あります
586 :
デフォルトの名無しさん :2011/11/05(土) 18:08:30.40
ふーん
>>585 行数制限がありそうな予感がしたので本家でやろうと思います
ありがとうございましたー。
いえいえ
589 :
デフォルトの名無しさん :2011/11/06(日) 19:13:24.14
よし
ちょっと配列について質問です。 a="dimdim" dim a,10,10 みたいに変数をつかった配列宣言ってできないものなんでしょうか? 擬似的・回避テクニックなどがあれば教えていただけないでしょうか?
よく分からないけど #define testdim(%1,%2,%3) dim %1,%2,%3 testdim abc,2,5 こういうこと?
>>591 あっ!そういうことです。
DEFINEがありましたね。
ありがとうございますm(_ _)m
>>593 なんかかっこいいな〜
塗れたわw
男だけどw
ついでになんですが 今、実行プログラムの他にテキストでスクリプト読ませて 後から実行プログラム弄らなくても色々変更できるような 物をつくっていたら、なんだか言語開発しているような 状態になってきたんですよねw スレ違いで大変申訳御座いませんが、 暇な方が居られたらご協力とか御願いできませんかね?
597 :
デフォルトの名無しさん :2011/11/08(火) 11:28:38.16
え?
HSPはハードコーディングでサクっと書く以上のことは追い求めない方がいい そこまでやるならそろそろHSPは卒業する時期だよ 他言語には最初からそういう用途で使えるPythonやLuaがある
確かに普通にCOMあたりで実装してスクリプト使えばいいよな。
COMなんて16ビットアプリケーションじゃないの? 32bitのEXEのほうがよくね?
PythonやLuaとかやろうとおもったけど画面出すだけでもハードルが高いので 無理でした
画面の出しやすさを求めるなら、2つ以上の言語を組み合わせるということもあり得そうだ
604 :
意味の人が、このことは多い! :2011/11/08(火) 22:40:18.63
本家よりここの人の方が親切な気がする。 本家は嫌な人の場合、[質問文の意味が分かりません] とか言って、そいつは逃げる。 んで、他の人が教えてくれる。 2chではそんなニとはない。
>>604 > 2chではそんなニとはない。
OCRソフトでも使ってるの?
windowsXPから7(32bit)に移行したらHSPDXFIX使ったスクリプトの終了時に エラーが出るようになったんだけど同じ症状の人いる? DirectXのバージョンのせいかと思ってるんだけど回避する方法ないかな?
608 :
596 :2011/11/09(水) 07:55:20.77
ここは皆さん親切だし、HSPだけじゃない 色々な情報があって勉強になるなぁ〜 とりあえず、まとまった形になったら、一度公開するので その時は添削していただけたら幸いです。
609 :
デフォルトの名無しさん :2011/11/09(水) 09:59:01.25
うん
610 :
デフォルトの名無しさん :2011/11/10(木) 18:51:14.61
(´・ω・`)…
>>607 hspdxfix.as / hspdxfix.dllは何処で入手した?
あとちゃんとes_byeしてる?
>>611 ググって最初にくるとこ(ver.0.19c)
もちろんes_byeしてる
XP環境じゃ問題なかったり
>>612 となると残りはas / dllの場所とHSPのverくらいだな…
自分のは64bit 7だけども普通にできてたからね
614 :
607 :2011/11/14(月) 02:16:11.33
ウィンドウモードだと下記のエラーが出る 「hsp3.exeは動作を停止しました。」→ 「問題が発生したためプログラムが正しく動作しなくなりました。〜」 フルスクリーンだと出ない 他の人のHSPDXFIX使ってる作品でも同様のエラーが出てる これはウチのPC固有の問題なのかな・・・
DirectX更新してグラフィックドライバも更新しとけ
>>614 言うとhspdxfixは仕様がウィンドウモード非推奨
617 :
デフォルトの名無しさん :2011/11/15(火) 10:27:41.96
へえ
ヘルプファイル調べてて気付いたけどHSPDXFIXってHSPDXに統合されてるんだな インクルードするのHSPDXに変えても全く同じ動作するわ 作者のHP見たら「今ではこれが本体に取り込まれてる」って書いてるし
書いてるのか
620 :
デフォルトの名無しさん :2011/11/15(火) 19:25:51.87
621 :
デフォルトの名無しさん :2011/11/15(火) 19:36:20.68
>>618 元々HSPDXのバグ取りと命令追加したものだからな
統合って言うかHSPDXはもう修正も何も行われないからHSPに同梱されるのが
HSPDXFIXの名前変えてHSPDXとして入れてる
622 :
デフォルトの名無しさん :2011/11/16(水) 20:10:37.88
へえ
>>620 それHSP3.3には標準で同梱されてるけど
>>620 使い方も何もそこにサンプル乗ってるじゃん。
それで分からんのなら諦めな。
コンテスト・・予選すら通りません。 イジメです。なんとかして下さい!!
アイディアをもうちょっと練ってみてばどうかな プログラムコンテストなのでプログラムの技術力が必要なのは言うまでもないが、 それ以外にも作品の、視覚的・聴覚的な部分も含めた完成度が問われるコンテストだからね。
628 :
デフォルトの名無しさん :2011/11/18(金) 20:55:24.22
exrandのソース持ってる人いる? isweb閉鎖でgetできん
629 :
デフォルトの名無しさん :2011/11/18(金) 21:38:35.69
かわいそうに・・・
>>625 通らないって事はよっぽど糞なソフト作ったんだろ。
もっとまともな物を作りなさい!
631 :
デフォルトの名無しさん :2011/11/19(土) 13:05:58.76
ナマイキな
>>625 一次審査通過した作品見れば自分に足りなかった物が少しは分かるだろ
633 :
デフォルトの名無しさん :2011/11/19(土) 22:18:28.92
(´・ω・`)
来年からネット審査員になって参加賞ゲットしてやる!! そんでもって、上から目線で優勝しそうなやつを片っ端からけなしてやる!! だって、貶すのは簡単だもんねwww 基地でも出来るよwww
来年優勝する予定の俺涙目
明日から本気出す
638 :
デフォルトの名無しさん :2011/11/20(日) 15:02:08.55
本気ねえ(笑)
これも毎年恒例だな。 一次通過も出来もない奴の愚痴w それはそれで、面白いんだが。
>634 登録抹消されて参加賞も無しになるだけだが まあせいぜい頑張ってくれ
mixiの日記などを自動でUPするものを作りたいと思うのですが、何か参考になるサイトってありますか? Perlやphpなどは、さっぱりわかりません・・・
まずHTTPプロトコルとユーザ認証を勉強しようか ああいうものの認証の仕組みを理解してからもう一度質問してみな
643 :
デフォルトの名無しさん :2011/11/22(火) 19:11:37.19
つかれたー!!
おねむりなさい
getkeyで「@」や「;」の入力を取得できますか?
キーコード取得サンプルで番号見てgetkeyに渡しても反応なし・・・
title "キー入力してください(^^)v"
onkey *inkey
onclick *inkey
stop
*inkey
if lparam
>>30 :stop
mes iparam
stop
普通に取得できたけど?
ああそういう意味か。 getkeyのヘルプを見ると、「この表に載っているキー以外でも、取得できる場合があります。」 と書いてあるんで、取得できないと思っておいたほうがいいと思う。 どうしても必要なら、サンプルのようにシステム変数使って渡してみたらどうかな。
ありがとうございます。
649 :
デフォルトの名無しさん :2011/11/23(水) 19:03:49.19
いえいえ
windows7(64)でmod_img.asの替りにpngを簡単に 表示する方法ってないですか? すみませんがおしえてください
>>651 ありがとうございます
しかし、windows2000からいきなり7(64)に環境をかえたんですが
imgloadどころかpicloadすら表示しない時がありますね・・・
なんかコツというか手順をすこし変えてやらないとだめなのかな?
653 :
デフォルトの名無しさん :2011/11/25(金) 23:16:05.05
>>654 まだまだ初心者なので・・・
結局のところ、png⇒bmpにファイル変更してpicloadで解決しました。
656 :
655 :2011/11/26(土) 10:15:53.82
う〜ん 結局、pngからbmp、imgload⇒picloadにして表示はされるようになったんですが 滅茶苦茶遅い・・・ 高々、マップチップをx,y,zの35*35*16個並べて移動させるだけで激重い・・・ 標準の命令では限界かな? やはり、グラフィック系のプラグインを導入して高速化を図るしかないですかね? GDI+とかも速いですか? 速い・分かりやすいプラグインがあれば教えてください
それくらいで重いって…? まさか毎回picloadしてるんじゃあるまいな?
>>656 35x35x16 ってのがどういう意味か分からん
16枚のレイヤーって意味なら多すぎるから減らすべき
いや、マップチップ・キャラチップの読み込みは一度きりで クォータービューのマップなので X、Y、Zの3軸分のマップチップを作業用のbufferにgocpyで並べて 並べ終わったら、表示スクリーンに倍角でコピーしてるだけです
>>659 描画無しで配列を読むだけでも重いからマップデータの持たせ方を変えたほうがいい
>>660 マップデータを配列に放り込むんじゃなくて
一つの変数に放り込んんでpeekとかで読み出すとかですか?
peekでマップデータ読み出す形式に変更しても速さはあまり変わらないですね・・・ やはり、gcopyの処理が重いみたいですね・・・
>>662 階層構造になる箇所が少ないなら
基本的に2次元のデータで扱うようにするってこと
>>662 拡大コピーが遅いんじゃねーの?
マップデータを拡大した物をバッファにおいて、
それをgcopyでコピーすれば?
フレームごとに並べなおしてるわけ?
666 :
デフォルトの名無しさん :2011/11/27(日) 00:32:01.04
667 :
デフォルトの名無しさん :2011/11/27(日) 00:37:50.94
hspで野球拳ゲームのサンプルある?
668 :
655 :2011/11/27(日) 00:59:09.86
>>665 動き回るごとに並べ直してます
>>666 重なり上書き部分が多いのでgcopyで並べてから拡大してます。
というか、ウィンドウサイズに合わせてマップチップを並べると
並べるチップ数が増えて激重になるので苦肉の作として拡大しましたw
あと
マップデータをpeekに変えて
表示のルーチンを見直して
ウィンドウサイズを800,600から640,480にして
マップの大きさを27*27*17にしたらなんとか実用に耐える速度になりました
結構なんとかなるものですね
マップチップをマップデータ化したバッファは用意してあるの? 既にやっていると思うけど念のために聞いてみる
dim key_type , 60 repeat 5 , 0 key_type.cnt*12 = cnt*12 key_type.(cnt*12+1) = cnt*12+1 key_type.(cnt*12+2) = cnt*12+2 key_type.(cnt*12+3) = cnt*12+3 key_type.(cnt*12+4) = cnt*12+4 key_type.(cnt*12+5) = cnt*12+5 key_type.(cnt*12+6) = cnt*12+6 key_type.(cnt*12+7) = cnt*12+7 key_type.(cnt*12+8) = cnt*12+8 key_type.(cnt*12+9) = cnt*12+9 key_type.(cnt*12+10) = cnt*12+10 key_type.(cnt*12+11) = cnt*12+11 loop 配列には、自身の添え字の値が入ってるはずなんだけど、なぜか所々0になってて意味がわからない・・・
ああああ カッコいるんですね失礼しました
672 :
デフォルトの名無しさん :2011/11/27(日) 21:39:57.11
まあね
はらへったなあ
674 :
デフォルトの名無しさん :2011/12/01(木) 23:03:28.26
へえ
書き込みがなくなったね・・・
hspはオワコン
677 :
デフォルトの名無しさん :2011/12/02(金) 18:59:57.99
そもそも始まってすらいねーよ
こりゃ失敬。
679 :
デフォルトの名無しさん :2011/12/03(土) 05:06:22.46
ぼくがかんがえた最強のステップアップ RPGツクールVX ↓ HSP ↓ C言語 これでゲームクリエイターよゆう
RPGツクールVXというと、Rubyが搭載されているから、つまりこういうことか Ruby ↓ HSP ↓ C
マップというか、ブロックみたいなのを画面に沢山並べたいんだけど・・・・。 x=0 color 0, 0, 255: boxf x+48*x, 0, x+48*x+48, 24 x=2 color 0, 0, 255: boxf x+48*x, 0, x+48*x+48, 24 x=4 color 0, 0, 255: boxf x+48*x, 0, x+48*x+48, 24//以下略 配列に上手くまとめるにはどうすればいいんですか?
配列なら dim a,length,width foreach a color 0,0,255 : boxf x*49, 0, x*49+48,24 loop これでいいんじゃね?
座標苦手… sx = 48 sy = 24 cx = 8 cy = 4 ox = 2 oy = 2 dim bx, cx, cy dim by, cx, cy left = 100 top = 75 color 0, 0, 255 y = 0 repeat cy x = 0 repeat cx bx(x, y) = left + (ox * x) + (sx * x) by(x, y) = top + (oy * y) + (sy * y) boxf bx(x, y), by(x, y), bx(x, y) + sx - 1, by(x, y) + sy - 1 x++ loop y++ loop
684 :
681 :2011/12/12(月) 17:02:17.71
ありがとうございます。 がんばって解読してみます。
685 :
デフォルトの名無しさん :2011/12/15(木) 18:35:12.27
いえいえ
686 :
デフォルトの名無しさん :2011/12/20(火) 00:45:01.27
HSP3掲示板 ホストは管理者により拒否されています。 うぜー 数ヶ月ぶりに解答しようとしたらこれだよ・・・
あり。
#include "hspda.as" a = "B\nC\nA" pos 200 , 200 : mes a sortnote a pos 300 , 200 : mes a エディタではエラーは出ないんですが、実行ファイル生成して実行すると 内部エラー(38)が出てしまいます。 sortnoteはバグがあるとか聞いたことあるのでそのせいかなーと思うんですが対処法はあるんでしょうか?
hspda.dllをフォルダにぶち込んでやったら動いた なぜリファレンスに書いてないんですかね・・・(憤怒)
ジョウシキダカラー
HSP関係者って内内で常識かざして来るよね 掲示板もマニュアル読めとかタグ付けろとか字下げしろとか注釈入れろとか 自動でパックファイルに居れる選択肢も有って良い気もするが・・・
マダワカッテナイナー
>>694 dllをexeに埋め込んでも動くわけねーだろ。
馬鹿かおまえ。
そんじゃ〜動くようにしてもらわんとな。
動かせるよ
動かせるよだよね
へえ
#funcを無効にする方法ってありますか? user32.as等を使った上で一つだけ#cfuncにしたいのだけど
別名変えて再定義かな。
>>701 #define CreateWindow CreateWindowHidden
#include "user32.as"
#undef CreateWindow
#uselib 〜
#defcfunc 〜
704 :
701 :2011/12/26(月) 00:12:49.61
>>702 思いつかなかった。それでよさそうです。
>>703 なるほど。勉強になります。
お二方ともありがとうございました。
初カキコ 3日前はじめたんだがとりあえず mesとposとbuttonとif(else)とgotoとrandmizeと(ry で初歩的なゲームを作ったんだがまさかif文に悩まされるとは思ってもなかった エクセルやっててよかったなと改めて思った一瞬である まさかこの言語って小数点以下が無い?
>>705 型変換に注意が必要
式の一番最初の型に合わせられる
2/3.0 は 0
2.0/3 は 0.6666666
double()で型変換も出来るがや。 refdvalが実数の返り値やで〜
ひゅう〜ひゅう〜
709 :
デフォルトの名無しさん :2011/12/26(月) 07:36:05.34
へえ
大文字と小文字を区別して記述できる機能がついたら、いいなぁ
711 :
デフォルトの名無しさん :2011/12/29(木) 11:01:24.96
いいねえ
モジュールの引数に初期値欲しいかな〜 現状マクロで対応は恰好悪い 欲言うとオーバーライドも・・・
713 :
デフォルトの名無しさん :2011/12/29(木) 13:23:56.45
オーバーライドもだよね
714 :
デフォルトの名無しさん :2011/12/29(木) 13:33:38.31
クラスが欲しい VB6レベルでいいから
まずは構造体だろ
716 :
デフォルトの名無しさん :2011/12/31(土) 09:52:14.05
構造体だね
親戚のおばちゃん(ヨン様の時に韓流にはまってた)も韓流飽きてたで BSの番組表見ると吐き気する言うてた んで今は台湾ドラマにはまってるとさ
韓国LGディスプレーの中国工場でスト、大赤字の同社に打撃
中国経済網は29日付で「ストライキの原因は年末のボーナス削減と韓国人従業員への差別的待遇に対する中国人従業員の不満だ」と報じた。
LGDの南京工場では26日から28日にかけて生産ラインが完全に停止し、関連工場にも影響が出た。
南京市経済開発区管理委員会に所属する呉主任は「今回の件はストライキでもサボタージュでもなく、工場が臨時休業しているだけ」と述べたが、
記事は「LGディスプレーは2011年、約670億円の赤字を出したことで、従来までは月給3カ月分だった年末ボーナスの支給そのものが難しくなった。
これは従業員の不満を招いたことに起因するストライキだ」と報じている。
http://news.searchina.ne.jp/disp.cgi?y=2011&d=1230&f=business_1230_116.shtml
719 :
デフォルトの名無しさん :2012/01/01(日) 03:45:40.37
自機(△)動かしたいんですが、間違いがあるみたいです。 screen 0,200,320,0 xmax=11:ymax=19:mx=7:my=7 xstep=16:ystep=16 *mainlp color 0,0,0:boxf gosub *memove await 100 goto *mainlp *mamove ;key input stick key,15,1 if key&1:mx-- if key&2:my-- if key&4:mx++ if key&8:my++ ;max min check if mx < 0:mx = 0 if mx > xmax :mx = xmax if my < 0:my = 0 if my > ymax : my = ymax color 0,128,0 pos mx*xstep,my*ystep mes "△" return stop
720 :
デフォルトの名無しさん :2012/01/01(日) 03:48:17.71
助けてください・・・
>>719 エラーメッセージを読めばスペルミスが分かるんじゃね?
722 :
デフォルトの名無しさん :2012/01/01(日) 03:52:36.20
>>721 #HSP script preprocessor ver3.3RC1 / onion software 1997-2011(c)
#Use file [hspdef.as]
#HSP code generator ver3.3RC1 / onion software 1997-2011(c)
#未初期化の変数があります(key)
#ラベルが存在しません [memove]
???(27) : error 19 : 致命的なエラーです (27行目)
って出たんですが・・・
724 :
デフォルトの名無しさん :2012/01/01(日) 03:55:23.97
726 :
デフォルトの名無しさん :2012/01/01(日) 03:59:28.01
>>725 ありがとうございます!
動きます!△動いてm巣!s
多分どこかから丸々パクってきたんだろこいつ 自分で書いたものならmemoveとmamoveの間違いに気付かないはずがない
神武天皇即位紀元(じんむてんのうそくいきげん)は、 初代天皇である神武天皇が即位したとされる年を元年 (紀元)とする、日本の紀年法である。 略称は皇紀(こうき)という。外にも、皇暦(こうれき)、 神武暦(じんむれき)、神武紀元(じんむきげん)、 日紀(にっき)などともいう。 年数の英字表記では、「Koki」や「Jimmu Era」などといい、 皇紀2660年を「Koki 2660」「Jimmu Era 2660」などと表記する。 紀元節(現在の建国記念の日)廃止までは、 単に「紀元」と言った場合には、神武天皇即位紀元(皇紀)を指していた。 西暦2012年は、神武天皇即位紀元皇紀2672年である。
731 :
デフォルトの名無しさん :2012/01/02(月) 17:50:01.92
こんなエラーが出たんですが、どこが悪いんでしょうか? #HSP script preprocessor ver3.3RC1 / onion software 1997-2011(c) #Use file [hspdef.as] #Error:SJIS space code error in line 101 [stg.hsp] #Fatal error reported.
734 :
デフォルトの名無しさん :2012/01/02(月) 18:16:21.49
いえいえ
HSP の font 命令 について質問です font 命令が実行されたときに 先に選ばれていた(SelectObjectで返されるHGDIOBJECT)フォントが破棄(DeleteObject)されるようになっているのでしょうか? それとも前のフォントのハンドルをどこか別に記憶していて破棄しているのでしょうか? CreateFontIndirect と SelectObject を使って斜め向きのフォントを描きたいのですが 自前で DeleteObject するべきかしないべきかが分からなくて困っています 何度も使う予定なのでリソースリークはさせたくありません 以上、よろしくお願いします
736 :
735 :2012/01/03(火) 11:28:16.68
>>735 について解決したかもしれません
間違っていたら指摘をお願いします
結論
新たに設定した hfont を BMSCR の hfont に代入しておけばOK
手順
1.CreateFontIndirect で HFONT を作成する
2.SelectObject でフォントを選択する
3.DeleteObject で以前の HFONT を破棄する
4.BMSCR の hfont (152バイト目) に新しく SelectObject した HFONT を代入する
以上!
737 :
デフォルトの名無しさん :2012/01/03(火) 19:18:59.03
STGで自機が画面の一番上に配置されるようになり 下方向キーと上方向キーが使えないんですが どうすれば良いんでしょうか
738 :
735 :2012/01/03(火) 19:30:44.45
>>737 もう一つの可能性は計算途中で三角関数を使っているために
0 を掛けたことになっている(稀に 1 or -1 扱いになって移動できるかもしれない)
タッチパネル用の命令ってないのかな 2点のやつはサンプルあったけど、普通に1点だけのがわかんない ボタン命令じゃ不便なのよね
掲示板ありが仕事サボッてるのか?
backdrop乙
人民元暴落間近、実はマイナス成長の中国GDP
アメリカの研究者の中には、今年の中国のGDPはマイナス10%ぐらいではないかと推計する人もいます。
そもそも中国の国家統計局が出している数字は、「架空の物語」です。
全国人民代表大会で決まった成長率を覆すような数字を、地方政府が上げるはずがない。16%だの24%だの、ありえない数字を出してきます。
みんなそれを知っていますから、加減してほどよい数字を作り上げる。それが国家統計局の仕事なんです。
中国の現状からすればGDPが上がるとは思えません。個人消費は明らかに減っています。住宅はといえば6500万戸が空き家状態。
企業は設備投資どころではなく、政府の財政支出も限界に来ています。
日本の新聞もようやく中国の不動産バブル崩壊について書き始めました。しかし内容は必ずしも正しくない。
不動産価格が上海で25%、北京で20%下落したといいますが、実際には40%ぐらい下がっていると思われます。
JBPRESS
http://jbpress.ismedia.jp/articles/-/34131?page=2 世界のGDP(単位10億ドル)
1位 アメリカ 14,526.55
2位 中国 5,878.26
3位 日本 5,458.80
↓
1位 アメリカ 14,526.55
2位 日本 5,458.80
3位 中国 5290.43
色々と速度が不満なので C++でdllを作ろうとしているのですが、 それの質問いいでしょうか すごく基本的なことなんですが、 statに値を入れてHSPのほうに渡すことはできるようになったのですが、 それ以外の方法でdllで計算した値を渡すにはどうしたらいいんでしょうか 例えば、配列とかをそのまま渡せるとすごく捗るのですが
747 :
デフォルトの名無しさん :2012/01/07(土) 16:36:53.04
▲▼▲▼▲▼ ▼▲▼▲▼▲ ▲▼▲▼▲▼ ▲▼ ▲▼ ▲▼ ▼▲▼▲▼▲▼▲ ▲▼ ▲▼▲ ▲▼ ▼▲▼ ▲▼ ▼▲ ▲▼ ▼▲ ▲▼ ▼▲ ▲▼ ▼▲
誤爆スマソ
>>746 もう少し詳しくおしえていただけないでしょうか
例えばSDKのサンプルに以下の命令がありますが
■■■■■■■■■■■■■■■■■■■■■■
static void newcmd2( void )
{
PVal *pval;
APTR aptr;
aptr = code_getva( &pval ); // 変数の取得(PValとAPTRポインタ)
p1=code_getdi(100); // 整数値を取得(デフォルト100)
if (p1==0) puterror( HSPERR_DIVIDED_BY_ZERO ); // 0ならばエラー
p2 = rand()%p1; // 乱数を発生させる
code_setva( pval, aptr, HSPVAR_FLAG_INT, &p2 ); // 変数に値を代入(整数値)
}
■■■■■■■■■■■■■■■■■■■■■■
code_setva( pval, aptr, HSPVAR_FLAG_INT, &p2 ); // 変数に値を代入(整数値)
↑
ここでHSP側の変数に代入しているのであろうことはわかるのですが、
HSP側の配列の各要素に代入するときはどの値をいじれば良いものか皆目見当がつきません。
>>749 フラットなDLLに直接値を渡すだけなら分かる
モジュール変数とかは知らない
多次元配列も知らない
// sample.dll
int __declspec(dllexport) sample_func(int array[], int array_size)
{
int i;
for(i=0;i<array_size;i++) array[i]=i;
return i;
}
// HSP
#uselib "sample.dll"
#func sample_func "sample_func" sptr, int
dim nums, 100
sample_func varptr(nums), length(nums)
>>750 ありがとうございます
自分の方でもあれから色々ネットしらべまして、
DLL側で受け取った変数を配列にして値を入れるとかできるようになってきました。
どうやらHspFunc_dim()の3番目のパラメータに1次元配列の要素数入れたので
上手く行かなかったようです。
というか、このパラメータには何の意味があるんだろう・・・
SDKの構造体の命令とかメソッドの詳細が一覧で載ってるサイトとかないんですかねぇ・・・
>>752 そうだね。
簡単にウインドウ出せるだけの簡易言語が魅力だものね
C系ゴリゴリやるならそっちで良いと思う。
>>753 そうじゃなくて hspsdk フォルダの中身があればプラグイン作るのに困らないだろってこと
HSP側の配列の各要素に 値を代入する方法はわかってきたのですが、 例えば PVal *hoge; hoge = code_getpval(); とかで取得したHSP側の配列の特定の要素を C++側の変数に代入するのはどうやればいいんでしょうか HspVarProcにそのような命令はありますか?
直接じゃなくても GetPtr でよさげ
GetPtrで帰ってくるのはPDAT型のポインタですよね? 例えばHSP側で hogestr="a","b" と用意した文字列型配列を C++側で PVal *hoge; hoge = code_getpval(); として取得した際に、 C++側で初期化した char hogechar[1024]; に "b"という文字列を読みこませるにはどうしたらいいんでしょうか。
>>758 数値とかはすぐ分かったが
文字列は面倒だったw
分かってみれば単に PVal の master[1] 〜 に hogestr.1 以降の実体のアドレスがあるだけだが
master[0] が NULL だったので分かりづらかった
多次元配列は len の数値から逆算するだけ
PVal *hoge; char hogechar[1024]; char **p; hoge = code_getpval(); p=(char**)hoge->master; strcpy(hogechar, p[1]);
761 :
デフォルトの名無しさん :2012/01/09(月) 23:03:13.27
ありがとうございます!!!
いえいえ
HSPに限ったことじゃないのですが、 コントロールパネル→タスク で、追加する方法では休止状態からの復帰が可能ですが、 IODATAの地デジチューナーに付属されているソフトは タスク使わずに休止状態から復帰します。 やり方わかる方いますか?
765 :
デフォルトの名無しさん :2012/01/20(金) 20:31:00.66
test
RPGの例えば、アイテムのデータ(名前、個数など)と 使用した時の処理(HPを回復するなど)を一緒に管理したいのですが どういう方法が適しているのでしょうか? 今はデータはswitchで処理はラベルで実行しています
767 :
デフォルトの名無しさん :2012/01/22(日) 14:58:50.16
質問が意味不明 箇条書きで良いからやりたい事を具体的に 後自分で考えた方法も
>>766 たぶんきっとそれはオブジェクト指向というもので、
HSPには無いものの一つなんだ
一応モジュールっていう劣化クラスみたいな機能はあるけど 本当に劣化もいいとこだしなぁ…あんまり勧められない
まあしかしどうしてもHSPで作りたいというなら学んで損はない機能だと思うぞ おかげで他の言語のクラスの概念も割と簡単に理解できたし
昔ながらの配列変数で管理する方法もなくはない というかいまだにモジュールの使い方がよく解らんのでそれでやってる
モジュール変数の入れ替えが簡単にできるとうれしいけど やりかたが分からないので整数の二次元配列使って memcpy でコピーしてる 今はこんなやりかた dim player, PLAYER_PARAMETER_NUM, PLAYER_NUM_MAX dim temp, PLAYER_PARAMETER_NUM COPY_SIZE=PLAYER_PARAMTER_NUM*4 // x番目とy番目のプレイヤーを入れ替える memcpy temp, player, COPY_SIZE, 0, COPY_SIZE*x memcpy player, player, COPY_SIZE, COPY_SIZE*x, COPY_SIZE*y memcpy player, temp, COPY_SIZE, COPY_SIZE*y, 0 整数以外のデータをちょくちょく入れ替え忘れるので 実数とか文字列とかも一発でコピーできるとうれしいのにな
773 :
766 :2012/01/23(月) 01:52:45.78
>>771 今は配列変数で管理してるんだと思います
キー入力で増減するsellectの値(0,1,2...)とアイテムのID(item_id(0),item_id(1),item_id(2)...)を関連付けて
どのアイテムのデータを選んだのか判別させてます
処理(ラベル)はsellectが0だったら0番のアイテムのラベルを呼ぶという感じです
http://hsp.tv/play/pforum.php?mode=pastwch&num=39714 ↑の一番上の人の書き方にかなり近いかと
モジュールは知っていましたが同じくどう使えばいいのか理解に苦しんでいます
モジュールの配列番号が分かるとどういう場面で便利なんでしょうか…?
>>773 newmod したり delmod したりすると連番じゃなくなるので
配列番号があるとうれしくなります
サカつく風ゲーム作ってます 途中まではちゃんと動作するのに 続けているとオブジェクト類の表示がおかしくなり エラーも出さずに強制終了してしまう・・・ どういうことでしょう・・・教えてくだされ
まずメモリがどうなっているか調べてみろ メモリの空きが無いなら、メモリを解放するようにする それでわからなければもう一度、今度はもう少し具体的に質問
oncmdで飛んだ先で配列の存在しない要素を指定したら エラー出さないで落ちたことはあったが…
>>776 回答ありがとうございます
知識不足でメモリの把握の仕方が合っているかわからないのですが
メモリが不足しているのかもしれません
順調にプレイ進行
→ある程度プレイする
→ダイアログボックスやコンボボックス等の表示がおかしくなる
→コンボボックス等オブジェクトが消える
→プレイ進行不可能
という感じです・・・
メモリの開放をするにはどのような方法があるのでしょうか
>>778 モジュール変数の確保を行う前に dimtype ほにゃらら, 5
で解放しておく
モジュール変数の実体にコピーを行うとメモリが解放されなくなるので
モジュール変数の実体は別にとっておいて基本的にクローンを操作するようにする
バッファの確保には ginfo_newid を使用せず #enum global ほにゃらら で固定の数値を使う
モジュール内の変数を外のプログラムから書き換えること(値の足し引きなど)はできますか?
>>780 書き換え用の関数を用意するか dup するか
>>780 モジュール変数じゃなくて #module #global で囲まれた中の変数って意味なら
#module hoge
#deffunc increment
x++
return x
#global
x@hoge=0
みたいに @モジュール名 で書き換えられる
本家の掲示板よりここの人達の方が新設ね。
>>781-782 ありがとうございます
モジュール変数の場合ではできないのでしょうか?
キャラクタの情報をモジュール変数で管理して中の変数の値を書き換えたいのです
キーボードのどのキーが押されたかを表示したいんですが、どの命令をつかってキーを取得すればいいんでしょうか?
>>786 getkey のヘルプにサンプルあるやん。
onkey *pushed *pushed mes Iparam stop これで何が押されたかは表示できました ここからキーコードを文字に変換して表示したいんですがどうしたらいいですか
Iparamってクリックやctrlは0として拾っちゃうんでしょうか
やってみろよks
クリックとctrlが取得できなくて詰んだんですがどうしたらいいんでしょうか 押しているキーを表示するソフトを作りたいわけですが
getkeyのヘルプに載ってるだろうがwwww それくらい考えろよwww 暇だから考えてやったけどこういうのが欲しいって言うことか?w onkey *inkey onclick *inkey stop *inkey repeat 121,1 getkey k,cnt c=cnt if k!0:break loop ;表示部分 mes c stop
793 :
792 :2012/02/07(火) 17:15:11.60
貼りつけた後思ったけど、repeatをいくら増やしても取れないものは取れないっぽいな 俺のところだと左Ctrlは取れたけど右Ctrlが取れないとか、カーソルの上下が取れて左右が取れないとか 色々駄目だった 駄目なものはstickで補えるかもしれないが、それでもムリなものもあるな スマソ
;iparamではなくwparamでなら普通に取れますね ;クリックはonclickで ;Ctrlの左右判定はlparamの拡張キーフラグを使用しています ;GetAsyncKeyStateだと1テンポ遅れるので ;Shiftの左右判定はスキャンコード(OEM依存)を見ればいいのかな? ;AltやF10などはシステムキーなのでonkeyでは取れないみたいです #define VK_CONTROL 0x11 #define VK_LCONTROL 0xA2 #define VK_RCONTROL 0xA3 onkey *pushed onclick *clicked stop *pushed if wparam == VK_CONTROL { if lparam >> 24 & 1 { mes VK_RCONTROL } else { mes VK_LCONTROL } } else { mes wparam } stop *clicked mes wparam stop
795 :
デフォルトの名無しさん :2012/02/07(火) 19:54:10.94
>>788 HSP3 文字列のひみつの「文字列のしくみ」を参照
>>791 文字が割り当てられてないんだからIparamじゃctrlとか見れなくて当然でしょ
文字とキーコードは別々に送られてくる(lparamを見ればHIIFT,CTRLの左右区別も出来る)
screen 0,800,600
onkey *pushed
onclick *m_pushed
stop
*pushed
a="_"
poke a,0,iparam
mes "Kキーコード : "+wparam+", 文字コード : "+iparam+"("+(a)+")"+", キーNO : "+((lparam
>>16 )&$fff)+", 拡張キーフラグ : "+((lparam
>>24 )&1)+", キーリピート:"+(lparam
>>30 )
stop
*m_pushed
mes "Mキーコード : "+wparam+", 座標X : "+(lparam&$ff)+", 座標Y : "+(lparam
>>16 )
stop
>>793 onkeyが特定のキーに対して離された時かキーリピート時にしか割り込みが起きないからrepeatで回すしかない
796 :
デフォルトの名無しさん :2012/02/07(火) 20:53:21.41
>>791 ちょっと読み違えた
配列にキーコードと対応した文章を入れて表示に使えば良い
getkeyの キーコード : 実際のキーを見ながら
sdim kmes,128,255
kmes(37)="カーソルキー[←]"
kmes(38)="カーソルキー[↑]"
kmes(39)="カーソルキー[→]"
kmes(40)="カーソルキー[↓]"
を全て最初にセットして
表示の時は
mes kmes(wparam)
とかすればいい
>>794 getkeyでループを回すしか全部のキーを見ることは出来ないな・・・
797 :
792 :2012/02/07(火) 21:33:59.21
>>795 >>796 なるほど、onkeyでは拾えないからrepeatの無限ループで回すしか無いのか、サンクス
やはり本家より親切だな〜ココ。
質問する人のレベルが低くても相手にしてくれるというか 質問の体をなしてなくても答えようとしてくれるというか ちゃんとした回答があっても読まないというか そういうところを突っ込む人が少ないだけ
800 :
デフォルトの名無しさん :2012/02/08(水) 03:13:44.02
答えてる奴はどっちも同じ だからここが親切とかは無い
なんでHSPって0除算するとエラーにしちゃうのかね? 昔のBASICでもほとんどの機種は0で何か割っても0が返るだけでエラーにはならなかったような…。 どうしてそういう仕様にしなくて、わざわざエラー出して止めちゃうんだろ?0を割っても0返すだけでいいだろうに。 いちいちIF文なり論理式なりで0とそれ以外に分けるモジュール作るしかないのかね?
>>801 何言ってるんだ?
で割ったら0になるわけねーだろ。
803 :
デフォルトの名無しさん :2012/02/08(水) 06:32:32.04
それは0かどうか確認するのが無駄になるからだろ OS自体が0乗算でエラー返すんだから 割り算かどうか確かめて更に0で割るかどうかを判断する必要が出てくる 0除算でエラーでなくなったけどHSPの処理速度が落ちたとかなったらアホ過ぎる
無理矢理0除算回避させるなら limit でやるとか?
#deffuncの中から特定の変数の値を変更したいのですが Cのグローバル変数のようなどの場所からでも値を変更できる変数を定義する方法はありませんか?
HSPは基本的に変数はグローバル扱いじゃなかったっけ?
@モジュール名の事じゃね〜 @hspとか
810 :
デフォルトの名無しさん :2012/02/10(金) 17:56:29.61
いえいえ
811 :
デフォルトの名無しさん :2012/02/10(金) 18:36:43.21
まだこんなツール使ってる情弱いるんだな
簡単なことはすぐにできるが ちょっと凝ったことをしようとすると途端に面倒くさくなる そんな言語
だがそれがいい
クラス関連全般ていうか、スコープないのがキツい 波括弧で括るアレ
HSPって、ちょっとしたことをやるのには便利だと思うけどな まぁ、そんなことをいいつつ、ちょっとしたことをするのはVBAになってるけど、これフリーじゃねーしな
>>816 VBAはちょっとしたことをやるには面倒だな。
APIの扱いもめんどくさいし。
特に文字列が。
HSPは拡張になるけど正規表現が使えて扱いやすい
#include "mod_regexp.as" が必要なHSP拡張命令。DLLでもVBSでもない
>>820 mod_regexp.asの中にnewcom oReg,"VBScript.RegExp"の記述があるよね。
BREGEXP.DLL・ONIG.DLLとかもあるけど正規表現の方言嫌う人用かしらね。
>>817 汎用的に扱うモジュールやらクラスなどなどを作り置きしてあるので楽なのよ。
もし、それらがなかったらやってられん。
GRID扱いたい場合はVBAはすごく捗る
>>811 昔、BASICだけに慣れていた人が今の環境でそのまま
すぐ簡単にやれるものでHSP以上のものがあるなら教えてくれよ
HSPより手軽なものって他に見当たらないが
まったくの初見で半日でMHP3のクエストランダムツール作れたよ 配列にデータ入れるのが一番時間かかったwww ウィンドウ最前面も枠消すのも検索したら即でてきたし 普通に作りやすかった
elonaはHSPのひとつの功罪だなw
>>824 ツール作るだけなら、なでしこの方がいいと思う
ゲーム製作に向いてないというのは百も承知
あと少しだけ労力注げる余力あるならC#一択
あの最強フォームデザイナの前にはHSP開発環境などゴミに等しい
828 :
デフォルトの名無しさん :2012/02/15(水) 07:49:23.08
つかHSPでフォームアプリ作ってるのかよ ちょっとした物作るのには結構便利だよこの言語
韓国大手製菓会社オリオンのチョコレート製品から基準値14倍の細菌が検出され、保健当局が緊急回収を命じたことが分かった。オリオン製菓は2年前にも製品から細菌が検出され回収を行っていたという。韓国メディアが14日、相次いで報じた。
基準値の14倍もの細菌が検出されたのはオリオンの人気シリーズ、Market Oのミルクチョコクラシックミニスペシャル。昨年12月28日に益山工場で生産された製品2万4030個で、1グラム当たり基準値1万個をはるかに超える14万個の細菌が検出された。
食品医薬安全庁は同製品の流通と販売を禁止し、市場に出回っている当該製品を回収させるなど行政処分を行った。問題の製品はすでに流通されておらず、オリオン製菓は原因が分かるまで同製品の生産と流通を無期限中断することを決めた。
バレンタインデーに発覚した食品の安全問題に、韓国では衝撃が走った。多くのメディアが「Market Oのチョコレートは細菌のかたまり」「基準値14倍の細菌検出で衝撃」「悪夢のバレンタインデー」などと報じた。
なお、オリオン製菓の「Market O リアルブラウニー(チョコレート焼菓子)」は2年ほど前から、韓国を訪れる日本人観光客の間で大人気となっている。昨年も韓国旅行のお土産ランキングの上位に挙がり、話題となった。(編集担当:金志秀)
http://news.livedoor.com/article/detail/6280729/
でもそんなの関係ねー
831 :
デフォルトの名無しさん :2012/02/15(水) 23:18:42.09
便利ねえ
C# は .NET framework いれろってうるさいのが嫌い
javaは良いのか?仮想プラットフォーム入れなくて?
今時Windowsに.NETは標準搭載が当たり前なんだがな どんな化石使ってるのか知らないが、自分のわがままを押し通さないことだな
OS入れ替えても利益なんて出ないから仕方が無い
わがままから生まれる進化もあるとは思うけど・・・
やりたい事と開発環境のせめぎあい HSPで満足してるならそれでいいじゃん 別にHSPアンチする気はないが 今どき、.NET入れられない環境とか結構厳しいな
まあC#と比べられたらおにたまさんも可哀想だろw HSPは個人で作ってんだからな
そもそも目指す方向が全然違うし 軽トラとスポーツカー比べてどうすんだって話
複数の文字列を一度に検索したいのですが instr(moji(a),, "あ"or"い"or"う") このように記述するのは無理なのでしょうか?
>>840 まさに
>>820 の正規表現 "VBScript.RegExp" でググれば良いと思う。
>>841 素早いレスありがとうございます
さっそく探してみる事にします
一応
if moji(a)="あ"| moji(a)="い"| moji(a)="う"{
で解決はしましたが、項目が多くなると
やっぱり大変なので・・・・
検索したい物が何個あってもいいように記述すればいい
845 :
デフォルトの名無しさん :2012/02/19(日) 08:59:19.51
記述すればいいね
846 :
デフォルトの名無しさん :2012/02/21(火) 19:06:27.72
わからん
a2d.hsp使わないでPNG表示させるモジュールとか無いのかい? a2d使いづらいんだよな。 mod_imgは使えないしさぁ。
>>847 何が使いずらいの?
GDI+のAPIだから改造すれば?
gdiplus.dllを使わないでもアルファPNG表示出来るよねって話?
850 :
デフォルトの名無しさん :2012/02/23(木) 13:07:05.04
さあ、HSPやったことないから知らない
発想変えてpngやめて別の形式にしとけばいいじゃん
HSP歴10年以上の俺様でも、流石に使わなくなったよHSP
モジュール名18文字までって短いから最大64文字くらいまで伸ばして欲しい モジュール変数の親子関係で player_attack_effect_mod とかやったらオーバーしたw
そういうこと気にするならHSPやめたら?
HSPの仕様による制限の事だろ。 そんな事で文句垂れるくらいなら 素直に別の言語使えばいいじゃん。
ここで言うんじゃなくて直接おにたま氏に要望出してこいよ
ついでに名前空間実装するよう言っておいて
変数のスコープに関しては微妙にモジュールが名前空間かな〜
関数は余裕で衝突するw
せっかくコメントあるんだから併用して使いましょう
865 :
デフォルトの名無しさん :2012/02/25(土) 11:38:54.30
うん
モジュールのネストもできるとうれしいな
やはりオーバーライドと関数の初期値が欲しいな
hspに期待するだけ無駄
HSPに挫折した低脳が何か申しております
870 :
デフォルトの名無しさん :2012/02/25(土) 14:07:32.83
へえ
ほぉ
>>869 hspごときに挫折するかよ。
失望ならまだしも。
初心者向けに敷居低くするというBasicの良さを取り入れた言語なんだから、 オーバーライドなんか取り入れないでしょ? 関数の初期値あたりはあってもいいけど、なくても困るほどではない。
HSPは慣れたら卒業するのが前提って感じだからな
875 :
デフォルトの名無しさん :2012/02/26(日) 12:24:25.42
それはプログラムが目的な場合だろ 作りたいもの作るなら卒業とか無意味
まあできる人が続けていくのは辛いんじゃねw 構造体も無いんだよ?むしろ作りたいものが無いからこそ残ってる
まあ、他のなんとかBasicって名乗ってるものには、 構造体をサポートしてるものが多いな。
構造体は必要だよ
構造体は現状でも何とかなるがコールバックは3で載るハズだったんだよな・・・
コールバックはラベル変数で代用
初めからサポートしていれば無駄な努力をしなくていいのにな。 初心者向けにしてもクリティカルな機能が無いのは嫌がらせとしか思えないw
要望もしないで愚痴るだけなら自分で作れよw
>>879 構造体をサポートするには、
バイト型やワード型がないと話にならんけどな。
クラスの実装のほうが嬉しい
嬉しいね
886 :
デフォルトの名無しさん :2012/02/27(月) 14:38:36.11
いててっ
888 :
デフォルトの名無しさん :2012/02/27(月) 22:47:28.38
クラスなんて構造体の延長線上の話だろ? まず構造体からってことだよ。
889 :
デフォルトの名無しさん :2012/02/27(月) 23:46:41.87
ではまずアイバーソンの記法から
モジュール変数はprivateな構造体
あれは構造体というより配列作成マクロだと思うw
モジュール変数は中途半端な仕様のゴミ
893 :
デフォルトの名無しさん :2012/02/28(火) 13:50:09.09
ゴミだね
894 :
デフォルトの名無しさん :2012/02/28(火) 15:34:36.75
>>890 モジュール変数はprivateな構造体だね
うん
898 :
デフォルトの名無しさん :2012/02/28(火) 22:01:21.47
>>895 今更、ストラウストップのアプローチ以外に意味があるの?
900 :
デフォルトの名無しさん :2012/02/28(火) 23:18:35.69
どうでもいいけど、構造体は必要だと思う。
構造体→クラス→名前空間→キャスト→バリアント→WYSIWYG
902 :
デフォルトの名無しさん :2012/02/29(水) 13:56:19.82
構造体くれ
お前ら単なるバインドの仕組みとして構造体が欲しいの? それとも自己参照までできるようにしてリスト、ツリーなんかを実現したいの?
どうなの?
一応リストもツリーもモジュール変数でできるよ クローンと実体の扱い方に注意しないとメモリリークするけど
>>903 API呼び出しで欲しいだけ。
後はどうでも良い。
#defineで初期値にラベルを設定したいのですがエラーが出るので不可能なんでしょうか? dim id, 4 : ldim label, 4 #define SET_MACRO(%1,%2=*null) id(%1)=%1, label(%1)=%2 SET_MACRO 1,*test1 SET_MACRO 2, SET_MACRO 3,*test2 ↑のid2は*nullへ飛ばしたいので省略して初期値が入るようにしたいのですが… #defineの行でエラーが出ていて、=*nullを消すとエラーは出ないので 初期値にラベルは指定できないのかなと
>>907 一旦ラベル変数に落として見るとか
#define SET_MACRO(%1=0,%2=0) \
label = %2 :if vartype(label) != 1 {label=*test1} :gosub label
SET_MACRO 1
SET_MACRO 3,*test2
SET_MACRO 1
SET_MACRO 3,*test3
stop
*test1 :mes "test1" :return
*test2 :mes "test2" :return
*test3 :mes "test3" :return
こんなんでもいけるみたい dim id, 4 : ldim label, 4 defaultlabel=*null #define SET_MACRO(%1,%2=defaultlabel) id(%1)=%1 : label(%1)=%2 SET_MACRO 1,*test1 SET_MACRO 2, SET_MACRO 3,*test2 repeat 3, 1 gosub label(cnt) loop stop *test1 mes "test1" return *test2 mes "test2" return *null mes "null" return
910 :
デフォルトの名無しさん :2012/03/01(木) 17:04:39.72
いけるみたいだね
>>908 一旦ラベル変数に落として見るとかだよね
うん
Hなサービスパックと思ったのに、プログラミング言語なんだ…。
つまらん
いえいえ
ひゅー
>>906 構造体の受け取りは今でもできるけど、そういうことじゃなくて?
クラッカー
何かレスがつくたびに、いちいち意味のない短いレスをしてる人がいる件についてはこれ触れたらいけない類のものなのか? いちいち「いえいえ」とかいらないと思うんだが
反応無いよりましじゃね
病気持ちはスルー推奨
そうかなあ
僕は話し相手は多い方がいいと思う
>>927 そうだよ。
くだらない書き込みすんなよ屑。
テスト
テスト
932 :
デフォルトの名無しさん :2012/03/06(火) 21:57:03.76
test
TEST
保守
誰だよHSPが初心者向きって言ったの。公式も2chも終わってるじゃねえか!!
公式にいる奴のほとんどが2chみてんだろ
どうみたって2chに毒されてる連中ばっかじゃねーか
>>936 HSPで簡単に出来ない事は初心者向きじゃないって事だ
勉強になったな
HSPはオワコン
ヽ( ´∀`)ノオワタ
完全にオワタね……
よーし、お前らでゲーム用のプログラム言語作ろうぜ
構造体ありでよろしく
(´・ω・`)…
945 :
デフォルトの名無しさん :2012/03/08(木) 22:36:37.40
過疎ってるからageるよ
この板では十分賑わってる方なんだが
サッカーゲーム作ってるんだけど、 エンブレムとか選手名ってフリーソフトでも 実在するものを使ったらやばいんでしょうか?
>>947 フリーソフトとか関係なく勝手に使うのはマズいね
2次創作は基地外の多いカテゴリでは辞めたほうがいいね サポーターとかなんJとかからマジギレして潰しにくるし
951 :
デフォルトの名無しさん :2012/03/10(土) 18:49:42.38
同人でもナマモノはかなりクローズドな界隈だからな 慎重にやらないとつぶされるよ
1文字違いの名前とか使ってるゲームあるけど あれはどうなん?
SQNY
>>952 それはOK
つか、みんなそうやって逃げる。
実名使うと後が面倒。
若干改変しても人気が出たらアウトなんだぜ まず無いとは思うがw
思うがねw
test
ifの条件文についての質問です。 指定した変数の中で2種類以上の変数が1以上のとき、という条件文は短く表記することが出来るのでしょうか? 具体的には if A >0 { if (B >0)or(C>0)or(D>0) { mes "2種類以上の変数が1以上です" } } if B>0 { if (A>0)or(C>0)or(D>0) { mes "2種類以上の変数が1以上です" } } という感じのスクリプトです。
負の数を考えないなら (A*B>0) or (B*C>0) or (C*A>0)とかどうよ 論理和(AとBで&を取る)を考えれば、もう少し良いものができそうだけど
repeatとswitch使った方が良いような
>>958 あまりHSPっぽくない方法
a=1
b=1
c=0
d=1
count=(a>0)+(b>0)+(c>0)+(d>0)
mes count
>>959 なるほど!そういう発想がありましたか。
>>960 repeatはわかりますが、switchという命令は知らないので今回は
>>959 さんの案でやりたいと思います。
すばやい回答ありがとうございました。
>>961 すいませんが、その処理の意味が良くわかりません。
(a>0)が真のとき1が代入されるということでしょうか?
>>961 そういうものがあったのか。それは目から鱗だわ。
hspはif文以外の処理速度ってどうなの
>>965 自分でやってみた範囲ではC言語で書いたときの13倍程度の所要時間
速度を求めるなら別の言語使えよ
if文とswitch、while速度がどれくらい違うかhsp内で比べたら色々効率変わってくると思う Cだとif文より圧倒的にswitchのが速い 100倍くらい
970 :
デフォルトの名無しさん :2012/03/15(木) 02:29:39.12
>>969 hspのswitch、whileはマクロ
gotoでループしてif分岐させてるだけ
たんなる見た目の違い
なんでswitchを標準命令にしないんだろ・・・
ラベル型配列が使えるようになったから
速度だけなら条件が増えるほど
switchより早くは出来るが・・・
971 :
デフォルトの名無しさん :2012/03/15(木) 02:47:59.41
>>963 比較はif分に使うフラグだけじゃない
普通の計算式に入れられる
if ((a>0)+(B>0)+(C>0)+(D>0))>1 {
mes "2種類以上の変数が1以上です"
}
>>965 >>968 こういう質問するやつの99%がロクにプロファイリングもやらねえという
プロファイリングを行えば何がボトルネックになっているのか、どこを改善すべきなのかという
実践的な経験を手にする事が出来る
ネタ振り的なゴミ質問する暇があるなら一行でも多くコードを書いて研鑚しろ低脳
>>973 ほっとけ。相手にすんな。
どーせ本家から追い出されたカスだよ。
hspはif文ワールドなのかよw おにたまはswitchに親でも殺されたのか
switchあるだろ
if文が詰まったトロイのswitchだがな
switchあるだろ
switchないとはいってないぜ?
switchあるだろ
>>975 switchはhsp3.0がリリースされる前に、
テスト板で有志達が議論して出来たマクロが、
正式採用されたからな。
中身はただのifの羅列。
>>981 if文ばかり使うやつを馬鹿にしてた俺は完全にピエロだったのか
どちらも同じ中間コードに変換されてたりしてw
こんなの絶対おかしいよ
switch に文字列が使えるのが便利だからこのままでいいよ 速度が必要なら自分でテーブルジャンプさせりゃいい というより速度が必要ならHSPを使うのが間違ってる
むしろHSPが間違い
mes 10>0 とかしてみるとわかるが >は左のが大きいと1を返し、そうじゃければ0を返す。 <だとその逆 ifは0かどうかを判定してるだけ で、>959はこう書ける if A*B or B*C or C*A ま、>0を書いた方がわかりやすいけどなw
>>987 なるほど、ショートプログラム(HSPTV部門)向けの小手先の技か。
非常にためになった。サンクス。
switchって2.xの時代もマクロで有ったと思うが 昔and・orが無い時*・+で代用してたじゃん
でもこれ初心者にプログラミングの入門としてすすめるときにif文ばかり使うなっていう明確な理由が示せないから良くないんじゃないの
可読性がよくなる
このスレに居るオウム 何て名前?
アレス