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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0826
おぼOBAQのアプリのお手本のスクリプトの指南願います。5解決


おぼ

リンク

2017/8/26(Sat) 19:16:50|NO.81117

たびたびすいません。おぼです。

OBAQで作りたいアプリがあったのですが、参考になりそうなサイトを読んでも結局わからず。第一歩が踏み出せなくてとうとう皆さんにお力をお貸し願いたく、ここに書き込むことにしました。

どんなアプリかは字で説明するよりは図のほうがいいと考えたので下記のリンクを見ていただけると助かります。

http://fast-uploader.com/file/7059297619000/

です。

今回お寄せくださった、スクリプト等をお手本に頑張りたいので、皆さんよろしくお願いいたします。



この記事に返信する


暇人

リンク

2017/8/26(Sat) 22:08:29|NO.81119

まずは付属のサンプルを色々触ってみてらでしょう
サンプルに作りたい物に必要な事が殆どあるような・・・



End

リンク

2017/8/26(Sat) 22:11:06|NO.81120

スプ陸翔は、HSPアシスタントからの引用です。


#include "obaq.as" ; ; パチンコ風のフィールドをランダムに作成します ; [ESC]で終了します ; randomize wx=480:wy=600 divx=8:divy=8 sx=wx/4/divx:sy=wy/4/divy screen 0,wx,wy celload "obaqlogo.bmp" ; OBAQロゴ読み込み logoid=stat ; ロゴのID *start qreset frame=0 ; GOALを登録 ; qaddpoly goal, 4, 60,120 qtype goal, type_bind qgroup goal,2,1,1 ; 釘を出す ; repeat 5 left=3 *reput a=cnt&1:x=rnd(divx-1)*sx+(sx/2)*a y=(cnt+2)*sy qaddpoly i, 3, x,y,0.01*rnd(628),2,2 if i<0 : goto *reput qtype i, type_bind qgroup i,1,2 left-- if left>0 : goto *reput loop *main ; メインループ ; stick key,0x4f if key&128 : end ; 玉を振らせる ; if (frame\40)=0 { qaddpoly my, 12, rnd(wx/4),16,0,4,4 } redraw 0 gradf ,,,,1,0,128 ; 画面クリア color 255,255,255 pos 0,0:mes "Frame:"+frame qexec qdraw gmode 2:pos wx-160,40 ; ロゴ表示 celput logoid redraw 1 await 12 ; GOALとの接触判定 qcollision goal qgetcol i,colx,coly if i>=0 { qdel i ; GOALに触れた玉は消す } frame++ if frame<1000 : goto *main goto *start

おぼさんの説明しているゲームとは違うものですが、参考に慣れれば幸いです。



おぼ

リンク

2017/8/27(Sun) 08:09:00|NO.81123

回答くださりありがとうございます。おぼです。

>暇人さん
私にとっては、ハードルが高いみたいでした。

>Endさん
引用ありがとうございます。引用してくださったサンプルが自分にはレベルが高かったので、私がイメージできそうなレベルとして、図に書いた状態を書きました。最初の手掛かりが、つかめれば何とかなりそうな気がするので何卒よろしくお願いいたします。
「いなえの鉛筆」サイトを拝読してもできませんでした。

ほかの皆さんでも、腕に覚えありの方おられましたら、ぜひご教授願います。、

よろしくお願いいたします。
(今思ったのですが、ヒントをバラバラ下さるよりドカンとスクリプトをご教授願ったほうが早いような気が・・・しました。)



あり

リンク

2017/8/27(Sun) 11:53:24|NO.81127

必要とする最低限の処理を組み込んだサンプルです。
(リスタート処理はスクリプトが複雑になるので割愛)
どの命令で何を行っているのかは一通り説明したつもりですが
詳細はF1ヘルプの命令解説を読んで下さい。

#include "obaq.as" pos 500, 30 button gosub "Go", *start : btnid = stat ; Goボタンの設置 *setting qreset ; OBAQ初期化 qaddpoly ball, 20, 80.0, 20.0, 0.0, 5.0, 5.0, 1, 1 ; ボール(20角形)作成 qtype ball, type_bind, 0 ; ボール位置を一時固定 qaddpoly goal, 4, 80.0, 100.0, 0.0, 20.0, 5.0, 1, 2 ; ゴール(4角形)設置 qtype goal, type_bind, 0 ; 位置を固定 qgroup ball, 1, 0, 2 ; ボールにqcollisionでコリジョン(当たり判定)を受け取るグループを設定 qaddpoly block1, 4, 120.0, 30.0, 0.0, 10.0, 10.0, 1, 4 ; 移動ブロック(4角形)の設置 qinertia block1, , 0.0 ; ブロックを落下しないように設定 qaddpoly block2, 3, 70.0, 60.0, 45.0, 10.0, 10.0, 1, 4 ; 邪魔ブロック(3角形)の設置 qtype block2, type_bind, 0 ; *main redraw 0 color 0, 0, 0 : boxf ; 画面のクリア qexec ; OBAQの動的処理は基本的にqexecからqdrawの間に記述する qspeed block1, 0.0, 0.0, 0.0, 2 ; 方向キーを離すと止まる stick key, 15 if key & 1 : qspeed block1, -0.1, 0.0, 0.0, 2 ; 方向キーでブロックを上下に移動 if key & 2 : qspeed block1, 0.0, -0.1, 0.0, 2 if key & 4 : qspeed block1, 0.1, 0.0, 0.0, 2 if key & 8 : qspeed block1, 0.0, 0.1, 0.0, 2 qcollision ball ; ボールに設定したコリジョングループの判定取得開始 qgetcol hitchk, hitx, hixy ; コリジョングループ内の判定を取得(hitchkに接触したオブジェクトIDが入る) if hitchk = goal : dialog "GOAL" :end ; ゴールにボールが触ったら終了 qdraw redraw 1 await 16 goto *main *start qtype ball, type_bind, 2 ; Goボタンを押すとボールを落とす return
移動ブロックがその場固定の回転だけという事だったのかもしれませんが
軸の指定を変えるだけで対応できるのでそこは独自に変更して下さい。



おぼ

リンク

2017/8/27(Sun) 14:05:34|NO.81133

回答くださりありがとうございます。おぼです。

>ありさん
いつもOBAQがらみの時に助けてくださり感謝しております。
今回教えてくださったスクリプトを土台に、いろいろカスタムして理解を府決めたいと思います。

助けてほしいときは掲示板に投稿するかもしれませんが、その時はよろしくお願いいたします。

ありがとうございました。



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