|
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
| |