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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0804
GENKI作ってしまった使い道のないスクリプトを投稿するスレ7解決


GENKI

リンク

2024/8/4(Sun) 20:58:31|NO.102007

作ってみたものの使い道なかったわ…なスクリプトを投稿するためのスレッドです。
作品として公開するほどじゃないけど、せっかく作ったからどこかに投稿したい。そんな行き場のないスクリプトの公開場所にご利用ください。
後々誰かの開発の役に立てればよし。他の方の投稿を改良するもよし。いっそ誰の役に立たなくてもよし。そんな気持ちで書き込んでいただければと思います。

ルール無用だとあれそうなので約束事を書いておきますね。

約束事
・けんかしない
・何百行もあるような大きいスクリプトは投稿しない。
・できればコピペで動くといいな。(素材はHSPTVフォルダが便利です。)
・ライセンスはNYSL


補足:コードッターが投稿できなくなってしまっていたので立てました。



この記事に返信する


GENKI

リンク

2024/8/4(Sun) 21:01:00|NO.102008

ということで1個目を。
フルスクリーンやるべきか?とか思って作ってみたもののフルスクリーンにするようなゲームができていないことを思い出したので使わなくなりました。
その内使うことに…なるといいな。


; ; HSP3 でフルスクリーンモードを使用するサンプル ; ; 縦横比が合わない部分は黒帯で埋めます。 ; #include "hsp3dish.as" ; ------------------------------ ; フルスクリーン ウィンドウ ; ------------------------------ ; まずフルスクリーンにした際に、画面の大きさを合わせるための情報を取得します。 ; screenでフルスクリーンにします。 ; 最後に viewcalc で表示スケールを合わせて完了です。 ; ; zoomView スケール ; viwOffsetX/Y 移動量 ; 描画解像度 ; 任意に指定する。 viewWinx = 800 viewWiny = 600 ; スケールと移動量を計算 ; 描画解像度がディルプレイより横長なら、上下を黒帯にします。 ; 描画解像度がディルプレイより縦長なら、左右を黒帯にします。 x = double(ginfo_dispx) / viewWinx y = double(ginfo_dispy) / viewWiny zoomView = x viwOffsetX = 0.0 viwOffsetY = ( double(ginfo_dispy) / zoomView - viewWiny) / 2.0 if y < x { zoomView = y viwOffsetX = ( double(ginfo_dispx) / zoomView - viewWinx) / 2.0 viwOffsetY = 0.0 } ; フルスクリーン ウィンドウを作成 screen 0, ginfo_dispx, ginfo_dispy, 256 ; 描画スケールを調整 gfilter 1 viewcalc vptype_translate, viwOffsetX, viwOffsetY viewcalc vptype_2d, zoomView, zoomView ; ------------------------------ ; 描画開始 ; ------------------------------ ; 背景を塗りつぶし color 255, 200, 200 boxf 0,0, viewWinx, viewWiny COLOR 255 boxf -100,-100,100,100 ; 通常通り描画 color mes "フルスクリーン表示" button "終了",*owari ; 余白を塗りつぶし color if viwOffsetY = 0.0 { boxf -viwOffsetX - 1, 0, -1, viewWiny boxf viewWinx + 1, 0, ginfo_winx, viewWiny } else { boxf 0, -viwOffsetY - 1, viewWinx, -1 boxf 0, viewWiny + 1, viewWinx, ginfo_winy } redraw 1 stop *owari end



雪月夜

リンク

2024/8/5(Mon) 07:12:25|NO.102009

『シェルピンスキーのギャレット』を描写するプログラム

w=0f+ginfo(12) h=0f+ginfo(13) wh=w/2 x=0.0 y=0.0 repeat x*=0.5 y*=0.5 r=rnd(3) if r=0{ x+wh }else:if r=1{ x+=wh/2 y-=h/2 } pset x,y+h await loop



Yta

リンク

2024/8/6(Tue) 17:28:06|NO.102013

プログラ
 // useless_script.hsp
// Display a window with the title "Useless HSP Script" dialog "This is a useless HSP script", "Useless HSP Script" // Define variables x = 100 y = 200 z = x + y // Display variable values in a message box mes "x = " + x mes "y = " + y mes "z = " + z // Create a loop that does nothing useful repeat 10 mes "This is loop iteration " + cnt loop // Define a function that does nothing useful #deffunc uselessFunction int a, int b return a * b // Call the useless function and display the result result = uselessFunction(3, 4) mes "Result of uselessFunction(3, 4) = " + result // Wait for the user to close the window stop </ore>



kinokawa

リンク

2024/9/7(Sat) 19:25:39|NO.102175

バイオハザードっぽい走り方の動きのみ2Dで再現
カーソルキーの上下左右で動きます

dim map,20,20 map(0, 0)=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 map(0, 1)=1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1 map(0, 2)=1,2,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,2,1 map(0, 3)=1,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,1 map(0, 4)=1,2,0,2,1,2,0,0,2,2,2,2,0,0,0,0,0,0,2,1 map(0, 5)=1,2,0,2,2,2,0,2,2,1,1,2,0,0,0,0,0,0,2,1 map(0, 6)=1,2,0,0,0,0,0,2,1,1,1,2,0,0,0,0,0,0,2,1 map(0, 7)=1,2,0,0,0,2,2,2,1,1,1,2,0,0,0,0,0,0,2,1 map(0, 8)=1,2,0,2,2,2,1,1,1,1,1,2,0,0,0,0,2,2,2,1 map(0, 9)=1,2,0,2,1,1,1,1,1,1,1,2,2,2,0,0,2,1,1,1 map(0,10)=1,2,0,2,1,1,1,1,1,1,1,1,1,2,0,0,2,1,1,1 map(0,11)=1,2,0,2,2,2,2,2,2,1,1,2,2,2,0,0,2,2,2,1 map(0,12)=1,2,0,0,0,0,0,0,2,1,1,2,0,0,0,0,0,0,2,1 map(0,13)=1,2,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,2,1 map(0,14)=1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1 map(0,15)=1,2,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,2,1 map(0,16)=1,2,0,0,0,0,2,2,1,1,1,2,0,0,0,0,0,0,2,1 map(0,17)=1,2,0,0,0,2,2,1,1,1,1,2,0,0,0,0,0,0,2,1 map(0,18)=1,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,1 map(0,19)=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 dim sin_tbl,256 repeat 256 : sin_tbl(cnt)=int(sin(3.14159/128*cnt)*256) : loop dim cos_tbl,256 repeat 256 : cos_tbl(cnt)=int(cos(3.14159/128*cnt)*256) : loop color 0,0,0 boxf x=50*256:y=100*256:size=1 repeat ar=0 stick sk,15 if sk&1 : r+=4 : if r>=256 : r=0 if sk&4 : r-=4 : if r<0 : r=255 if sk&2 : ar=-4 if sk&8 : ar=4 ay=cos_tbl(r)*ar y+=ay sy=y/256 a=sx/20:c=(sx+size)/20 b=sy/20:d=(sy+size)/20 z=map(a,b)+map(c,b)+map(a,d)+map(c,d) if z>0 { if ay>0 { sy=d*20-size-1:y=sy*256} else {sy=(b+1)*20: y=sy*256} } ax=sin_tbl(r)*ar x+=ax sx=x/256 a=sx/20:c=(sx+size)/20 b=sy/20:d=(sy+size)/20 z=map(a,b)+map(c,b)+map(a,d)+map(c,d) if z>0 { if ax>0 { sx=c*20-size-1:x=sx*256} else {sx=(a+1)*20:x=sx*256} } redraw 0 color 0,0,0 boxf repeat 20 yy=cnt repeat 20 xx=cnt if map(xx,yy)=1 :color 255,255,255:boxf xx*20,yy*20,xx*20+18,yy*20+18 if map(xx,yy)=2 :color 10,10,50:boxf xx*20,yy*20,xx*20+18,yy*20+18 loop loop color 255,0,0 grect x/256,y/256,double(-r)/40.0,30,15 grect (x-(sin_tbl(r)*13))/256,(y-(cos_tbl(r)*13))/256,double(-r)/40.0,15,15 redraw 1 await 17 loop



GENKI

リンク

2025/11/9(Sun) 23:59:53|NO.104249

久しぶりに作ってしまった。
公開する場所もないのでここに投下。

数字を億とか兆で表示する方法に変換する関数。
誰かが作っていそうな気がしないでもない。(´・ω・`)


; ; numberString ; p_numStr : 数値の文字列 ; ; 数の位を命数法(万、億、兆、…などの漢字)に変換します。 ; 数値は半角英数の文字列で指定してください。 ; 指数は使用できません。小数点以下は除去されます。 ; ; 例 ; mes numberString("-123456789.123") ; -1億2345万6789 ; #module #defcfunc numberString str p_numStr suuji = "万", "億", "兆", "京", "垓", "杼", "穣", "溝", "澗", "正", "載", "極", "恒河沙", "阿僧祇", "那由他", "不可思議", "無量大数" ; 数字以外除去 numStr = p_numStr ; 前後のスペースを除去 numStr = strtrim(numStr, 0, ' ') ; 小数点以下を除去 if instr(numStr, 0, ".") > 0 { numStr = strmid(numStr, 0, instr(numStr, 0, ".")) } ; 負に対応 fugou = strmid(numStr, 0, 1) if (fugou="+") | (fugou="-") { numStr = strmid(numStr, 1, strlen(numStr)) } else { fugou = "" } ; 桁数確認 len = strlen(numStr) if len <= 4 : return numStr ; 右から4桁ずつ書き出していく nsNum = "" repeat if len <= 0 : break lwKeta = 4 upKeta = len - 4 part = strmid(numStr, -1, 4) ; suujiの数上限 if cnt-1>=16 { part = numStr upKeta = 0 } if int(part) ! 0 { part = strtrim(part, 1, '0') if cnt = 0 { nsNum = part } else { nsNum = part + suuji(cnt-1) + nsNum } } numStr = strmid(numStr, 0, upKeta) len = upKeta loop nsNum = fugou + nsNum return nsNum #global ; サンプル #if 10 mes numberString("0") s = "1" repeat 20 mes numberString(s) s += "0000" loop mes numberString("123456789.123") mes numberString("100450089") mes numberString("12345") mes numberString("1234500000000000067890") mes numberString("1000000000000000000000000000000000000000000000000000000000000") #endif
𥝱は杼に置き変えてます。
ゲームの得点表示にと思ったものの、杼以上だと実数の誤差が出始めるので実用的じゃない問題。



ffleboom

リンク

2025/11/10(Mon) 17:55:17|NO.104253

いいね!行き場のないスクリプトの墓場、最高のアイデアだわ(笑)
俺も前に「3分で作ったけど誰得?」なHSPの星がランダムにキラキラするやつ、寝かせてたんだよね。
せっかくだから後で投げてみる!
NYSLだし、誰かが「これ便利!」って拾ってくれたらラッキーだし、
何もなくても「作った」って記録が残るのが嬉しい。
また覗きに来るわ〜 https://googlebaseball.io



MIZUSHIKI

リンク

2025/11/10(Mon) 21:46:13|NO.104255

半透明対応の角丸矩形描画モジュール(オフセット付き+オマケ)です。
gsquare で分割三角形を並べることで角丸を表現できるかもと思って試したものです。
どうせ変に重なって濃い部分ができると思ったのですが、なんか上手くいってしまいました。

// 描画モジュール #module ; 配列に格納された座標点を順に結んで線を描画 / p1:点の数(配列長/2) #deffunc lineArray array arr, int p1, int ox, int oy pos ox+arr(0),oy+arr(1) repeat limit(p1-1,0,length(arr)/2-1),1 line ox+arr(cnt*2),oy+arr(cnt*2+1) loop return ; オフセット付きで塗りつぶし矩形(boxf)を描画 [半透明可] #deffunc boxfao int ax, int ay, int bx, int by, int ox, int oy pdx=ax+ox,bx+ox,bx+ox,ax+ox pdy=ay+oy,ay+oy,by+oy,by+oy gsquare -1,pdx,pdy return ; オフセット付きで塗りつぶし三角形を描画 [半透明可] #deffunc trianglefao int ax, int ay, int bx, int by, int cx, int cy, int ox, int oy pdx=ax+ox,bx+ox,cx+ox,ax+ox pdy=ay+oy,by+oy,cy+oy,ay+oy gsquare -1,pdx,pdy return ; オフセット付きで塗りつぶし四角形(任意の4点)を描画 [半透明可] #deffunc quadfao int ax, int ay, int bx, int by, int cx, int cy, int dx, int dy, int ox, int oy pdx=ax+ox,bx+ox,cx+ox,dx+ox pdy=ay+oy,by+oy,cy+oy,dy+oy gsquare -1,pdx,pdy return ; オフセット付きで円またはドーナツ状円(太さ指定)を描画 [半透明可] / thick:太さ(1=塗りつぶし), div:分割数 ... ちょっと円が「いびつ」になります #deffunc circlefao int x1, int y1, int x2, int y2, int thick, int div, int ox, int oy dcx = double(x1 + x2) / 2.0 + ox dcy = double(y1 + y2) / 2.0 + oy rx = absf(x2 - x1) / 2.0 ry = absf(y2 - y1) / 2.0 if rx < 1 || ry < 1 : return div_ = div : if div_ <= 0 : div_ = limit((rx+ry)/4, 12, 128) if thick == 1 { repeat div_ ang1 = 2.0 * M_PI * cnt / div_ ang2 = 2.0 * M_PI * (cnt+1) / div_ x3 = dcx + cos(ang1) * rx y3 = dcy + sin(ang1) * ry x4 = dcx + cos(ang2) * rx y4 = dcy + sin(ang2) * ry trianglefao dcx, dcy, x3, y3, x4, y4 loop return } thick_ = double(thick) if thick_ < 1 : thick_ = 1.0 rx1 = rx - thick_/2.0 ry1 = ry - thick_/2.0 rx2 = rx + thick_/2.0 ry2 = ry + thick_/2.0 if rx1 < 0 : rx1 = 0 if ry1 < 0 : ry1 = 0 repeat div_ ang1 = 2.0 * M_PI * cnt / div_ ang2 = 2.0 * M_PI * (cnt+1) / div_ ox1 = dcx + cos(ang1) * rx2 oy1 = dcy + sin(ang1) * ry2 ox2 = dcx + cos(ang2) * rx2 oy2 = dcy + sin(ang2) * ry2 ix2 = dcx + cos(ang2) * rx1 iy2 = dcy + sin(ang2) * ry1 ix1 = dcx + cos(ang1) * rx1 iy1 = dcy + sin(ang1) * ry1 quadfao ox1,oy1, ox2,oy2, ix2,iy2, ix1,iy1 loop return ; オフセット付きで角丸矩形を描画(角の半径と分割数を指定) [半透明可] / r:角丸半径, div:分割数 #deffunc rboxfao int x1, int y1, int x2, int y2, int r, int div, int ox, int oy div_ = div : if div_ <= 0 : div_ = limit(6+(r-5)*(12-6)/(25-5), 6,12) boxfao x1+r, y1, x2-r, y2, ox,oy boxfao x1, y1+r, x1+r, y2-r, ox,oy boxfao x2-r, y1+r, x2, y2-r, ox,oy repeat 4 if cnt=0 : cx=x1+r : cy=y1+r : ang0=180.0 if cnt=1 : cx=x2-r : cy=y1+r : ang0=270.0 if cnt=2 : cx=x2-r : cy=y2-r : ang0=0.0 if cnt=3 : cx=x1+r : cy=y2-r : ang0=90.0 repeat div_ ang1 = ang0 + 90.0 * cnt/div_ ang2 = ang0 + 90.0 * (cnt+1)/div_ x3 = cx + cos(ang1/180.0*M_PI)*r y3 = cy + sin(ang1/180.0*M_PI)*r x4 = cx + cos(ang2/180.0*M_PI)*r y4 = cy + sin(ang2/180.0*M_PI)*r trianglefao cx,cy, x3,y3, x4,y4, ox,oy loop loop return ; 自動的に角丸半径を算出して角丸矩形を描画 [半透明可] #deffunc rboxfao_auto int x1, int y1, int x2, int y2, int ox, int oy w = abs(x2 - x1) h = abs(y2 - y1) r = (w+h)/40 if r > w/2 : r = w/2 if r > h/2 : r = h/2 if r < 1 : r = 1 rboxfao x1,y1,x2,y2, r,0, ox,oy return #global //============================================================ // サンプル(半透明重なりデモ) //============================================================ gmode 3,,,80 ; 半透明モード // 線の配列描画 [オフセット利用] arr = 0,0, 120,50, 50,100, 0,0 color 0,0,255 lineArray arr, 4, 60,60 // 矩形 color 255,0,0 boxfao 150,60,250,160 // 三角形 color 0,255,0 trianglefao 260,70, 340,170, 200,170 // 四角形(任意の4点) color 0,128,255 quadfao 310,80, 420,90, 400,180, 300,160 // 円(塗りつぶし)... ちょっと「いびつ」になります color 255,128,0 circlefao 90,220,190,320, 1 // ドーナツ状円(太さ12)... 同上 color 255,0,128 circlefao 150,240,250,340, 12 // 角丸矩形(半径・分割数指定) color 0,200,200 rboxfao 240,230,390,330, 25, 12 // 自動角丸矩形 [オフセット利用] color 150,0,200 rboxfao_auto 240,230,390,330, 100,20

コンテストに投稿している mod_layerbuttonモジュール の中で使っています。
が、基本ゲームを作らない自分ではこれ以上利用しないかも。ということで「使い道のない」レギュレーションは満たしているかと。。。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.102007への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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