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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1009
孝乃花chrome bookで実行ファイルを使えるようにしたい15解決


孝乃花

リンク

2021/10/9(Sat) 21:07:16|NO.94100

chromebookでHSPの実行ファイルを使えるようにできないでしょうか?
#include "hsp3dish.as"を最初の行に書き加えたのですがダメでした。
どのようなスクリプトを書き換えたらよいかご指導お願いします。
以下スクリプトです。
#packopt icon "tango.ico"
#pack "p1.png"
#pack "p2.gif"
#pack "p3.png"
#pack "score.txt"
#pack "type1.txt"
#pack "yes.wav"
#pack "no.wav"
#packopt name "shuzo"

#pack "start.mp3"
#ifndef _debug ;実行ファイルを実行したとき以外はこの処理を飛ばす
exist ""+dir_cur+"\\start.mp3"
if strsize=-1:bcopy "start.mp3",""+dir_cur+"\\start.mp3" ;exeファイルと同じ場所になければpackからコピー
#endif

#pack "fight.mp3"
#ifndef _debug ;実行ファイルを実行したとき以外はこの処理を飛ばす
exist ""+dir_cur+"\\fight.mp3"
if strsize=-1:bcopy "fight.mp3",""+dir_cur+"\\fight.mp3" ;exeファイルと同じ場所になければpackからコピー
#endif

#pack "oto1.mp3"
#ifndef _debug ;実行ファイルを実行したとき以外はこの処理を飛ばす
exist ""+dir_cur+"\\oto1.mp3"
if strsize=-1:bcopy "oto1.mp3",""+dir_cur+"\\oto1.mp3" ;exeファイルと同じ場所になければpackからコピー
#endif

#include"hgimg3.as"
dmmini

#include "hsp3util.as" ;配列変数による文書読み書きに使用する
RANKMAX=5 ;ここの数字がランキングの順位数となる
sdim ranks,64,RANKMAX ; ファイルの読み書きに用いる
sdim scores,64,RANKMAX ; 文字列と数値の変換に用いる
dim hiscore,RANKMAX+1 ; スコア用 順位数+1個分確保
sdim rankname,64,RANKMAX+1 ;名前用 順位数+1個分確保
arrayload "score.txt",ranks ;ランキングを読み込む
repeat RANKMAX
getstr scores(cnt),ranks(cnt),0,' '
getstr rankname(cnt),ranks(cnt),strsize,0
hiscore(cnt)=int(scores(cnt)) ;文字列から数値に変換
loop

; 正解時の文言を指定
winmess={"正解
いいぞ!
やるな!
さすが!
天才だ!"}
sdim winmes,64
split winmess,"\n",winmes ; 上の文言を分割
; 不正解時の文言を指定
losemess={"不正解
嘘だろ?
気合いだ!
熱くなれ!"}
sdim losemes,64
split losemess,"\n",losemes ; 上の文言を分割


*Start
mmload"start.mp3",0,1
mmload"oto1.mp3",1,2
mmload"fight.mp3",2,1
mmload"yes.wav",3,2
mmload"no.wav",4,2
screen 0,600,400
mmplay 0
title "修造ENGLISH"
redraw 0
color:boxf
celload "p1.png",1
color 255,0,0:font "HG明朝E",50:pos (870-50*11)/2,100:mes "修造ENGLISH"
color $FF,$FF,$00:font "HG明朝E",30:pos (600-30* 6)/2,180:mes "〜お試し版〜"
color 255,255,255:font "HG明朝E",30:pos (400- 8*15)/2,250:mes "スタート(Enter)"
:pos (400- 8*15)/2,275:mes "課金(SPC)"
pos (400- 8*15)/2,300:mes "終了(ESC)"

redraw 1
repeat
pos 400,200
celput 1
stick key
if(key&32):mmplay 1:break
if(key&16):mmplay 1:goto*kakin
if(key&128):mmplay 1:end
await 20
loop


mmplay 2
notesel buf
ab=0
ac=0

time=1500 : ; await 20を500回くり返すことで約10秒に変更。
noteload "type1.txt",50000 : ; 外に出す。
sdim kaitou,500 : ; 外に出す。初期化は代入で行う。

celload "p2.gif",2
celload "p3.png",3

*shuffle ; 問題のシャッフルを行う
sdim mondaix,64,notemax/2 ; 問題用の変数(元の順序)
sdim seitoux,64,notemax/2 ; 正答用の変数(元の順序)
sdim mondai,64,notemax/2 ; 問題用の変数(シャッフル後の順序)
sdim seitou,64,notemax/2 ; 正答用の変数(シャッフル後の順序)
sdim tmp,64
repeat notemax ; まず、元となるtxtファイルから問題と正答を読み出す
noteget mondaix(cnt),cnt*2
noteget seitoux(cnt),(cnt*2)+1
await
loop
randomize ; ここから実際にシャッフルしていく
foreach mondai
tmp=rnd(length(mondai))
foreach mondai
if mondai(cnt)=mondaix(tmp){ ; rndだけだとかぶりが発生するのでここで調整
tmp+
if tmp>=length(mondai):tmp=0
continue 0
}
await
loop
mondai(cnt)=mondaix(tmp)
seitou(cnt)=seitoux(tmp)
await
loop


*main
cls ;このスクリプトならclsでいいと思う。
color 255,255,0
boxf
pos 270,100
gmode 4,64,64,256;設定
color 0,0,0;透明化させる色
celput 2
pos 0,0
color 0,0,0
font "MS ゴシック",48,1
mes "ハイスコア="+hiscore(0)+"":mes "正解="+seikai+"":mes "不正解="+huseikai+""
a=mondai(ab)
mes a
b=seitou(ac)
kaitou="" : ; 初期化。
objmode 2 : ; clsを残したので、これらも残す。
font msgothic,48
objsize 250,50
input kaitou
objsel 0 : ; これが無いと2回目以降にinputボックス内に入力カーソルがデフォで出ない。
mes "PUSH ENTER"

; mainを2つに分ける。
*main_2
time=time-1
redraw 0 : ; 画面のチラツキを防ぐ。
color 255,255,0 : boxf 300,300,599,399 : ; 残り時間の表示を消去。
color 0,0,0 : ; 消去の際に色を変えたので、文字の色に黒を指定。
pos 300,300
mes "残り時間:"+str((time+49)/50) : ; timeが49以下になると0と表示されるのを防ぐために49を足す。
redraw 1
if time<1:goto *gameover : ; 残り時間を表示させてから*gameoverに飛ぶように順番変更。
; wait 100は使わない。
stick ky
if (ky&32)!=0 :goto *judge : ; ifは私の好みの書き方なだけの変更。gosubをgotoに変更。
await 20 : ; wait 1を変更。
goto *main_2 : ; 変更。

*judge
pos 370,50
if kaitou=b{
mes winmes(rnd(length(winmes))):mmplay 3
seikai=seikai+1
}else{
mes losemes(rnd(length(losemes))):mmplay 4
huseikai=huseikai+1
}
wait 100
ab+
ac+

if huseikai=3:goto*gameover
goto *main : ; gosubをgotoに変えたのでreturnも変更

*gameover
clrobj:await 16
cls
hiscore(RANKMAX)=seikai ;hiscoreに1つ空きを持たせたので、そこに今回のスコアを代入
seikai=0:huseikai=0:ab=0:ac=1 ;リセット
redraw 1
pos 80,0:color 255,0,0
font "MS gothic",96
mes"Game Over"
noteunsel
pos 170, 100
gmode 4,64,64,256;設定
color 0,0,0;透明化させる色
celput 3
pos 120,300
font "MS gothic",20
objsize 100,50
button"one more",*start
pos 370,300
button"finish",*ranking
stop; 別ラベルに飛ぶように変更。

*longmode
mmplay 2
notesel buf
ab=0
ac=0

time=3000 : ; await 20を500回くり返すことで約10秒に変更。
noteload "type1.txt",50000 : ; 外に出す。
sdim kaitou,500 : ; 外に出す。初期化は代入で行う。

celload "p2.gif",2
celload "p3.png",3
goto *shuffle

*kakin
cls
font "MS gothic",96
pos 80,170:color 255,0,0
mes "2480円"
pos 100,300
font "MS gothic",20
objsize 100,50
button "購入",*oto
stop

*oto
mmplay 1
goto*longmode

*ranking
cls
color 0,0,255
pos 10,10
font "MS gothic",36
if hiscore(0)<seikai{ ;1位だった場合、それを祝う
mes "RANKING - HIGH SCORE!!"
}else{
mes "RANKING"
}
font "MS gothic",48
sortval hiscore,1 ;数字の大きな順に配列を並べなおす
hitmp=0
sdim ranknames,64,RANKMAX+1 ;名前を並び替えるのに使う
foreach hiscore
sortget hitmp,cnt
ranknames(cnt)=rankname(hitmp)
if hitmp=RANKMAX:color 255,0,0:else:color 0,0,0
pos 10
if cnt<RANKMAX{ ;順位によって1st、2nd、…となるようにする
poy=ginfo_cy
if cnt=0:ranktxt="1st"
if cnt=1:ranktxt="2nd"
if cnt=2:ranktxt="3rd"
if cnt>2:ranktxt=""+(cnt+1)+"th"
mes ""+ranktxt+" "+hiscore(cnt)
pos 180,poy
if hitmp=RANKMAX{
input ranknames(cnt),410,ginfo_mesy,24
}else{
mes ranknames(cnt)
}
}else{
if hitmp=RANKMAX{ ;ランク外だった場合、最下位のちょっと下に表示される(マリオ64DSリスペクト)
rankin=0
mes "\nYou "+hiscore(cnt)
}else{ ;ランキングに入っている場合、名前登録を促す
rankin=1
font "MS gothic",28
mes "\n名前を上の欄に\n入力してください"
}
}
loop
font "MS gothic",24
pos 290,290
objsize 300,50
if rankin=1{
button "セーブしてメニューへ",*ranksave
tomenu=stat
button "セーブして終了",*ranksave
}else{
button "メニューへ",*ranksave
tomenu=stat
button "終了",*ranksave
}
stop
*ranksave
if stat=tomenu:menuflg=1:else:menuflg=0 ;どちらのボタンを押したか判別
if rankin=1{ ;ランク外の時は保存処理を飛ばす
foreach hiscore
rankname(cnt)=ranknames(cnt)
if cnt=RANKMAX:break
scores(cnt)=str(hiscore(cnt)) ;数値を文字列に変換
ranks(cnt)=scores(cnt)+" "+rankname(cnt)
loop
arraysave "score.txt",ranks ;ランキングを保存
}
if menuflg=1:goto *Start
end



この記事に返信する


UT-X

リンク

2021/10/10(Sun) 00:35:34|NO.94103

HSPはWindowsのみサポートしており、基本的に他のOSでは動きません。
HSP3Dishは他のOSでも動かせるように調整が加えられていますが、一部機能が制限されています。
今回の場合、ソース自体はHSP3Dish環境でも動くソースではありますが、
Chromebookでの動作となるとAndroidアプリの開発環境が必要になってくるため、おすすめしません。
(Androidアプリの開発環境の構築は私でも難しいです)



Crystal

リンク

2021/10/10(Sun) 09:56:51|NO.94106

HSPを実行ファイルとしてChromeBookに使うのは無理です。
OSが違うため、実行ファイルも当然違います。WindowsならEXE形式ですが、ChromeBook
は、APKまたはDEB形式という形になります。
ChromebookではEXE形式は利用できないのです。Windowsで動くアプリがChromebookで使える
というのは現段階で存在しません。Google Playストア経由であればある程度可能です。
Google PlayはAPK形式でこれはHSP3Dishで作成することができます。
ですが、Java,Android SDKといった別のコンポーネントが追加で必要になり、HSP3Dishは
まだ開発段階のため、作成できるオブジェクトに制限があります。現段階では、
mes(print)命令、Button命令くらいでしょうか。input命令はまだ使えなかったはず。
機能はだいぶ減りますが、ChromeBookでどうしても使いたいのであれば、APK形式で作ること
をおすすめします。



zakki

リンク

2021/10/10(Sun) 11:42:09|NO.94107

Chrome OSもPWA(プログレッシブウェブアプリ)対応しているはずなので
htmlにmetaタグとserviceWorker対応のscriptタグ追加して
webmanifestとサービスワーカー(sw.js)を用意すると
https://github.com/zakki/block3/tree/main/docs

こんな感じで、ブラウザ表示時にアドレスバーにインストールボタンが出るようになってオフラインでも使えるようになります。
https://zakki.github.io/block3/

https対応のウェブサイトとテキストエディタさえあれば、一つでWindows/Mac/Android/iOS全部対応できるので
ブラウザ実行での機能や速度の制限が問題ないアプリなら割と手軽です。



zrs90(5さい)

リンク

2021/10/10(Sun) 12:00:46|NO.94108

すみません。自分の投稿を削除しました。

Chrome BookでAPK形式のファイルを動作
出来るんですね。知りませんでした。

出来ないと思ってましたので、hsp3dish.js を使った場合は?
のような記事を投稿したのですが...ムダでした。
申し訳ないです。



ねんねこ

リンク

2021/10/10(Sun) 12:35:10|NO.94109

>>94106
inputは対応しています。
しかしmesbox命令には対応していないようです。
なので
hsp3dish.jsとWebサーバーでやった方がいいと思います。
(むだな開発環境がいらないため)



zrs90(5さい)

リンク

2021/10/10(Sun) 14:28:17|NO.94112

ねんねこさんへ

input/chkboxのオブジェクトが対応してあるのは
dishのマニュアルによると、Windows/Linaxだけ
のようです。(開発中版のHSP3.6xは不明)

それに、hsp3dishとhsp3dish.jsの動作制約が
加わるので、注意が必要です。

後、間違ってなければ、hsp3dish.jsの実装に
携わった方も、このスレッドで記述されてますので
安易に発言するのは、控えた方が良いです。

(※もちろん、他の方々も、実力のある方達です。
私も、ねんねこさんも、掲示板で何度も助けて
もらってるはずです。覚えてませんか?)



ねんねこ

リンク

2021/10/10(Sun) 16:54:08|NO.94114

>>94112
わかりました。すみません。



孝乃花

リンク

2021/10/10(Sun) 22:37:11|NO.94120

みなさん、ありがとうございます。
Chromebookではかなり難しいということがわかりました。

zakkiさん、可能性を見出してくださりありがとうございます。
自分はプログラミング初心者すぎて、
webmanifestとサービスワーカー(sw.js)がどういうものなのか全くわかりません。
どのような手順を踏めば、このURLを出せるようになるのでしょうか?
初心者でもできますか?
有料で何か登録が必要ですか?
質問ばかりで申し訳ありません。
お助けお願いします。



Crystal

リンク

2021/10/10(Sun) 23:15:52|NO.94122

Zakkiさんではないですが、参考になりそうなのを拾いました。
https://www.google.com/amp/s/laboradian.com/create-installable-pwa-website/amp/
ここにやり方がのっています。hsp3dishで出力したhtmlをこのサイトで解説している
Index.htmlとして考えるだけで難しくは無いと思います。
また、これらのファイルはGitHubと呼ばれる誰でも無料でソースやモジュールを
使えるサイトに公開されているのでダウンロードしてください。無料でなにか登録する
必要はありません。(間違っていましたら教えてください)



孝乃花

リンク

2021/10/12(Tue) 22:57:57|NO.94152

Crystalさん、ありがとうございます!
自分でも調べてみます。



zrs90(5さい)

リンク

2021/10/13(Wed) 00:00:07|NO.94153

...で、このゲーム、プラットフォームは結局
どうなりました?

やはり、hsp3dish helper で、hsp3dish.js用に
ファイル生成して、webで公開(予定)ですか?

今、この掲示板で(※個人的にですが)1番気になってます。
スレッド主さんが、もし、このゲームを上の方法で
web公開させる事が出来れば、後の方も
これを手本にして、続いて出てくるかも...
と思うと楽しみで。

後、スレッド主さんと、私、ほとんど同じ時期に
この掲示板に書き込みを始めていて、他人事に思えなくて...
(※私のネット歴 1ヶ月とほぼ同じ。)


追記。

zakkiさんですが、hsp3dish.jsを実装した方で
合ってますか?...ちょっと前に書き込んで
消した後に、書き込みが増えていて、驚いたんですが。



zakki

リンク

2021/10/13(Wed) 18:53:30|NO.94157

PWAの理念や基本はCrystalさんが張ってくださった記事で良いと思います。
iOSやAndroidのストアの開発者登録のようなことは不要ですが、ホームエレベーターを置くサーバーは有料のも無料のもあります。
↑のgithubはOSS向けですが無料で使えます。

> zakkiさんですが、hsp3dish.jsを実装した方で合ってますか?
初期実装といくつかの修正はやりました。

dish.jsのinputでアルファベット入力は出来そうですが、日本語IME対応はどうやればいいんですかね…
https://github.com/zakki/OpenHSP-fork/tree/fix-js-input



zrs90(5さい)

リンク

2021/10/13(Wed) 22:38:16|NO.94162

...やはり、ご本人でしたか。
ご返答、ありがとうございました。

dish.js の、inputの実装、期待してます。



和歌ノ鼻

リンク

2021/10/14(Thu) 12:31:37|NO.94164

異端OSで動くわけなかろう



Crystal

リンク

2021/10/15(Fri) 13:05:03|NO.94168

>異端OSで動くわけなかろう
もうこのスレッドは解決しており、あなたの書かれた内容はすでに記載されています。
もう少しスレッドの内容を確認してから書き込んでください。



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