home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 May
/
VPR9605A.BIN
/
ffilly
/
bmine
/
brimineh.tfy
< prev
next >
Wrap
Text File
|
1996-02-14
|
21KB
|
860 lines
//作品情報
#info INAM "BrickSweeper 画像版"
#info ISBJ "BrickSweeper Ver0.2 rev H"
#info IGNR "Game"
#info MDFY "Ask me"
#info TRNS "Ask me"
#info VIDO "800x600,16"
#info IART "Cotton No.100"
#info ICOP "Cotton No.100"
#info GRPC "えすぽん,kajino@mat00.matlab.osakac.ac.jp"
#info PROD "Cotton No.100,PXW05573@niftyserve.or.jp"
#info CONT "Cotton No.100,PXW05573@niftyserve.or.jp"
#info ICMT "Visual Basic からFillyへの移植計画その1rev 2"
//グローバル変数
int Pic0;
int Pic1;
int Pic2;
int Pic3;
int CellWidth;//マスの横の数
int CellHeight;//マスの縦の数
int CellAll;//マスの総数
int PicCellX;//マスの縦幅
int PicCellY;//マスの横幅
int CONTINUE;
int END;
int cell[];//探知機の示す数
int Flag[];//フラグ(0:フラグなし,1:フラグあり,2:?フラグ)
int opcell[];//マスが開いているか閉じているか(0:閉じている,1:開いている)
int BOMB;//爆弾数
int OpenNo;//開けたマスの数
int Score;//スコア(=時間)
int BOMBREST;//爆弾数-フラグ数
str sScore;
int GAMEEND;//ゲームエンドフラグ(0:ゲーム中,1:ゲームオーバー)
int CellXTemp;//マスの横の数設定バッファ
int CellYTemp;//マスの縦の数設定バッファ
int BOMBTemp;//爆弾数設定バッファ
int Level;//レベル(1:初級,2:中級,3:上級,4:その他)
str sBeginHighName;//初級ハイスコアの名前
str sImmeHighName;//中級ハイスコアの名前
str sExpertHighName;//上級ハイスコアの名前
str sTempHighName;//テンボラリハイスコア名前
int BeginScore;//初級のハイスコア
int ImmeScore;//中級のハイスコア
int ExpertScore;//上級のハイスコア
str ALPHA;//アルファベット文字列
int WinKind;//Window番号2において、ウィンドウの種類(0:ハイスコア表示、1:ハイスコア入力)
//シナリオ本体
main(){
//以下の値はデフォルト値です
//ここから3行は、自由に変えてみてください。
CellXTemp=8;//横のマスの数
CellYTemp=8;//縦のマスの数
BOMBTemp=10;//爆弾数
BOMBREST=10;
//ここまで・・・・・。
Level=1;
WinKind=0;
ALPHA="0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ReadIniFile();//ハイスコア読みだし
Initial();
LoadPic("mineall.bmp");//Pic番号0
LoadPic("null.bmp");//pic番号1
a=CreatePic(1,40,260);//pic番号2
LoadPic("temp.bmp");//pic番号3
CapTitle("BrickSweeper");
OpenWin(1,100,100,100,100,0,0);//メインウィンドウ(window番号=0)
OpenWin(2,0,0,40,260,0,0,0xfffffff);//設定ウィンドウ(window番号=1)
DrawIniPicture();
GetBombNo(BOMB,cell[]);
mes(LBDOWN){
if(Button()==END){
CloseWin(0);
del_all;del_me;
}
}
mes(RBDOWN){
if(RButton()==END){
CloseWin(0);
del_all;del_me;
}
}
mes(LBDBLCLK){
if(Button()==END){
CloseWin(0);
del_all;del_me;
}
}
mes(KEY_DOWN){
if(MesP1==2){//Window番号が2の場合
if(WinKind==1){//Windowがハイスコア入力である
HighNameInput();
}
}
}
mes(TIME){
step(20){//4秒後にクローズする
// ,//まず最初は、このループを無視する
//CloseWin(0);
//CloseWin(1);
//del_all;
//del_me;
if((GAMEEND==0) && (OpenNo!=0)){
Score=Score+1;
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("T:%ld",Score);
TextWrite(sScore,2,2,142);//パラメータはピクチャ番号
}
};
};
//ここまでに書いてください
}
Initial()
{
//BackMode(1);
BgColor(192,192,192);//薄い灰色
CellWidth=CellXTemp;
CellHeight=CellYTemp;
BOMB=BOMBTemp;
BOMBREST=BOMB;
PicCellX=20;
PicCellY=20;
Pic0=0;
Pic1=1;
Pic2=2;
Pic3=3;
CONTINUE=0;
END=1;
CellAll=CellWidth*CellHeight;
Score=0;
GAMEEND=0;
OpenNo=0;
}
TransferCell(int Para,int cellno)
{
//このルーチンは、以下のパラメータの画像をcellnoで指定した
//位置に転送するものです。
//Para=0 なし
//Para=1~8 数字
//Para=9 爆弾
//Para=10 爆弾X
//Para=11 爆弾it!!
//Para=12 普通のボタン
//Para=13 フラグ
//Para=14 フラグX
//Para=15 なし
//Para=16 ?ボタン
int ax,ay;
int temp;
//行は、0行目から始まるとする。
ay=(cellno /CellWidth)*PicCellY;
if(((cellno/CellWidth)%2)==0){//行が偶数の場合、(ay=0,2,4,6...)
ax=(cellno % CellWidth)*PicCellX;
}
if(((cellno/CellWidth)%2)==1){//行が奇数のとき(ay=1,3,5,7...)
ax=(cellno % CellWidth)*PicCellX+(PicCellX/2);
}
MovePic(Pic0,Para*PicCellX,0,PicCellX,PicCellY,Pic1,ax,ay);
}
TransferCell2(int Para,int cellno)
{
int ax,ay,bwi,bhe,nnx,nny;
int temp;
real nx,ny;
//行は、0行目から始まるとする。
ay=(cellno /CellWidth)*PicCellY;
if(((cellno/CellWidth)%2)==0){//行が偶数の場合、(ay=0,2,4,6...)
ax=(cellno % CellWidth)*PicCellX;
}
if(((cellno/CellWidth)%2)==1){//行が奇数のとき(ay=1,3,5,7...)
ax=(cellno % CellWidth)*PicCellX+(PicCellX/2);
}
//画像の描画(等倍)
//MovePic(Pic3,ax,ay,PicCellX,PicCellY,Pic1,ax,ay);
//画像の描画(自動調整)
bwi=PicWidth(3)/(CellWidth+1);//(本当はCellWidth+0.5
bhe=(PicHeight(3)/CellHeight);
nnx=(ax*PicWidth(3))/(PicCellX*(CellWidth+1));//本当はCellWidth+0.5
nny=(ay*PicHeight(3))/(PicCellY*CellHeight);
//nnx=RealtoInt(nx);
//nny=RealtoInt(ny);
MoveSPic(Pic3,nnx,nny,bwi,bhe,Pic1,ax,ay,PicCellX,PicCellY);
//普通のセルの描画
MovePic(Pic0,Para*PicCellX,0,PicCellX,PicCellY,Pic1,ax,ay,0,0xC0C0C0);
}
TransferCellA(int cellno)
{
//これは、まだ開かれていないセルに対して有効
int temp;
if(cell[cellno]<6){
temp=cell[cellno];
}else{
temp=9;
}
TransferCell2(temp,cellno);
}
DrawIniPicture()
{
//このルーチンは、初期画面描画をするものです。
int i,j;
i=0;j=0;
//メインWindowの大きさを変える
MoveWin(0,1,100,50,(PicCellX/2)+PicCellX * (CellWidth),PicCellY*CellHeight,0,0);
//メインウィンドウの画面を消す
MoveSPic(Pic0,0,0,PicCellX,PicCellY,Pic1,0,0,(PicCellX/2)+PicCellX * (CellWidth),PicCellY*CellHeight);
//設定ウィンドウの描画
//SCOREのバック
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,0,40,20);
//Xのセル数設定のバック
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,2,0,20,40,20);
//Xのセル数設定ボタン(左)
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,40,20,20);
//Xのセル数設定ボタン(右)
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,20,40,20,20);
//Yのセル数設定のバック
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,2,0,60,40,20);
//Yのセル数設定ボタン(左)
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,80,20,20);
//Yのセル数設定ボタン(右)
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,20,80,20,20);
//爆弾数設定のバック
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,2,0,100,40,20);
//爆弾数設定ボタン(左)
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,120,20,20);
//爆弾数設定ボタン(右)
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,20,120,20,20);
//時間(スコア)表示
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,2,0,140,40,20);
//初級ボタン
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,160,40,20);
//中級ボタン
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,180,40,20);
//上級ボタン
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,200,40,20);
//ハイスコア表示ボタン
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,2,0,220,40,20);
//Rest表示
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,2,0,240,40,20);
//Xのセル数表示
SetFont(14,"MS 明朝",128);
sScore=StrPrint("X:%ld ",CellWidth);
TextWrite(sScore,2,2,22);//パラメータはピクチャ番号
//Yのセル数表示
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("Y:%ld ",CellHeight);
TextWrite(sScore,2,2,62);//パラメータはピクチャ番号
//爆弾数表示
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("B:%ld ",BOMB);
TextWrite(sScore,2,2,102);//パラメータはピクチャ番号
//スコア表示
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("T:%ld ",Score);
TextWrite(sScore,2,2,142);//パラメータはピクチャ番号
//初級ボタン
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("初級");
TextWrite(sScore,2,2,162);//パラメータはピクチャ番号
//中級ボタン
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("中級");
TextWrite(sScore,2,2,182);//パラメータはピクチャ番号
//上級ボタン
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("上級");
TextWrite(sScore,2,2,202);//パラメータはピクチャ番号
//ハイスコアボタン
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("順位");
TextWrite(sScore,2,2,222);//パラメータはピクチャ番号
//Rest表示
//SetFont(14,"MS 明朝",128);
sScore=StrPrint("R:%ld ",BOMBREST);
TextWrite(sScore,2,2,242);//パラメータはピクチャ番号
//セル
for(i=0;i<=CellWidth-1;i=i+1){
for(j=0;j<=CellHeight-1;j=j+1){
k=i+CellWidth*j;
//データ初期化
cell[k]=0;Flag[k]=0;opcell[k]=0;
TransferCell(12,k);
}
}
}
int XYToCellPos(int X,int Y)
{
if((Y/PicCellY)%2==0){//偶数行の場合
if((PicCellX*CellWidth)<X){
return (-1);
}else{
return (X/PicCellX)+(Y/PicCellY)*CellWidth;
}
}else{//奇数行の場合
if(X>(PicCellX/2)){
return ((X-(PicCellX/2))/PicCellX)+(Y/PicCellY)*CellWidth;
}else{
return (-1);
}
}
}
int Button()
{
int X,Y;
int cellno,celltemp;
int Xtemp,Ytemp,WN;
X=MesP2;Y=MesP3;WN=MesP1;
cellno=XYToCellPos(X,Y);
if(WN==0){//window番号が0の場合
if(cellno!=(-1)){//領域内の場合
if(GAMEEND==0){//ゲームエンドでない
if(opcell[cellno]==0){//まだ開かれてない
if(Flag[cellno]==0 || Flag[cellno]==2){//通常のフラグが立てられていない
if(cell[cellno]>6){
GAMEEND=1;
celltemp=9;//爆弾の絵のパラメータ
TransferCell2(celltemp,cellno);
sScore=StrPrint("(XX)");
TextWrite(sScore,2,3,2);//パラメータはピクチャ番号
}else{
if(cell[cellno]==0){//探知機=0
TransferCell2(0,cellno);//自分自身
opcell[cellno]=1;
OpenNo=OpenNo+1;
if(Hantei()==(-1)){
GesiGesi(cellno);
}
if(Hantei()==1){
//ゲームクリア
GAMEEND=1;
sScore=StrPrint("(^^)V");
TextWrite(sScore,2,3,2);//パラメータはピクチャ番号
InputHighScore();//名前の入力(^_^;)
}
}else{
opcell[cellno]=1;
OpenNo=OpenNo+1;
celltemp=cell[cellno];
TransferCell2(celltemp,cellno);
if(Hantei()==1){
//ゲームクリア
GAMEEND=1;
sScore=StrPrint("(^^)V");
TextWrite(sScore,2,3,2);//パラメータはピクチャ番号
InputHighScore();//名前の入力(^_^;)
}
}
}
}
}
}else{//ゲームエンド
}
}else{//領域外の場合
}
}
if(WN==1){//設定Window
if(Y<20){//リスタートボタン
Level=CheckLevel();
Initial();
DrawIniPicture();
GetBombNo(BOMB,cell[]);
}
if((Y>=40)&&(Y<60)){//Xのセル数変更
if(X<20){
CellXTemp=CellXTemp-1;
sScore=StrPrint("X:%ld ",CellXTemp);
TextWrite(sScore,2,2,22);//パラメータはピクチャ番号
}else{
CellXTemp=CellXTemp+1;
sScore=StrPrint("X:%ld ",CellXTemp);
TextWrite(sScore,2,2,22);//パラメータはピクチャ番号
}
}
if((Y>=80)&&(Y<100)){//Yのセル数変更
if(X<20){
CellYTemp=CellYTemp-1;
sScore=StrPrint("Y:%ld ",CellYTemp);
TextWrite(sScore,2,2,62);//パラメータはピクチャ番号
}else{
CellYTemp=CellYTemp+1;
sScore=StrPrint("Y:%ld ",CellYTemp);
TextWrite(sScore,2,2,62);//パラメータはピクチャ番号
}
}
if((Y>=120)&&(Y<140)){//爆弾数変更
if(X<20){
BOMBTemp=BOMBTemp-1;
sScore=StrPrint("B:%ld ",BOMBTemp);
TextWrite(sScore,2,2,102);//パラメータはピクチャ番号
}else{
BOMBTemp=BOMBTemp+1;
sScore=StrPrint("B:%ld ",BOMBTemp);
TextWrite(sScore,2,2,102);//パラメータはピクチャ番号
}
}
if((Y>=160)&&(Y<180)){//初級ボタン
Level=1;
BOMBTemp=10;
CellXTemp=8;
CellYTemp=8;
Initial();
DrawIniPicture();
GetBombNo(BOMB,cell[]);
}
if((Y>=180)&&(Y<200)){//中級ボタン
Level=2;
BOMBTemp=40;
CellXTemp=16;
CellYTemp=16;
Initial();
DrawIniPicture();
GetBombNo(BOMB,cell[]);
}
if((Y>=200)&&(Y<220)){//上級ボタン
Level=3;
BOMBTemp=99;
CellXTemp=30;
CellYTemp=16;
Initial();
DrawIniPicture();
GetBombNo(BOMB,cell[]);
}
if((Y>=220)&&(Y<240)){//ハイスコアボタン
DispHighScore();
}
}
if(WN=2){//ハイスコア関係ウィンドウ
if(WinKind==0){//ハイスコア表示ウィンドウ
if(Y>=175 && Y<195 && X>=75 && X<125){//OKボタン領域
//入力ウィンドウ(Window番号2)を破棄する。
CloseWin(2);
//画像(Picture番号4)を破棄する
DelPic(4);
}
}
if(WinKind==1){//ハイスコア入力ウィンドウ
if(Y>=75 && Y<95 && X>=75 && X<125){//OKボタン領域
//ハイスコア更新処理
//そのレベルのハイスコアと名前を書き込む
if(Level==1){
sBeginHighName=sTempHighName;
}
if(Level==2){
sImmeHighName=sTempHighName;
}
if(Level==3){
sExpertHighName=sTempHighName;
}
//INIファイルに書き込む
WriteIniFile();
//テンポラリハイスコア名をnullにする。
sTempHighName="";
//入力ウィンドウ(Window番号2)を破棄する。
CloseWin(2);
//画像(Picture番号4)を破棄する
DelPic(4);
}
}
}
return CONTINUE;
}
int RButton()
{
int X,Y;
int cellno,celltemp;
int Xtemp,Ytemp,WN;
X=MesP2;Y=MesP3;WN=MesP1;
cellno=XYToCellPos(X,Y);
if(WN==0){//window番号が0の場合
if(cellno!=(-1)){//領域内の場合
if(GAMEEND==0){//ゲームエンドでない
if(opcell[cellno]==0){//まだ開かれてない
if(Flag[cellno]==0){//Flagなし
TransferCell(13,cellno);
Flag[cellno]=1;
BOMBREST=BOMBREST-1;
sScore=StrPrint("R:%ld ",BOMBREST);
TextWrite(sScore,2,2,242);//パラメータはピクチャ番号
}else{
if(Flag[cellno]==1){//Flag
TransferCell(16,cellno);
Flag[cellno]=2;
BOMBREST=BOMBREST+1;
sScore=StrPrint("R:%ld ",BOMBREST);
TextWrite(sScore,2,2,242);//パラメータはピクチャ番号
}else{
if(Flag[cellno]==2){//?Flag
TransferCell(12,cellno);
Flag[cellno]=0;
}
}
}
}
}else{//ゲームエンド
}
}else{//領域外の場合
}
}
if(WN==1){//設定Window
}
}
GetBombNo(int BombNo,int InDim[])
{
int i,Answer,res,X;
X=0;
while(X < BombNo){
Answer=Random(CellAll);
if(InDim[Answer]<7){
InDim[Answer]=InDim[Answer]+7;
X=X+1;
for(i=0;i<=5;i=i+1){
res=Numret(Answer,i);
if(res!=(-1)){
InDim[res]=InDim[res]+1;
}
}
}else{
//何もしない
}
}
}
int Numret(int Ind,int PosFromInd)
{
int KG;//奇数か偶数化の判別(KG=0:偶数KG=1:奇数)
//r=-1;
int Xpos,Ypos;
Xpos=0;Ypos=0;
Xpos=Ind % CellWidth;//Xの位置(0から)
Ypos=(Ind/CellWidth);
if((Ypos%2)==0){
KG=0;
}else{//
KG=1;
}
if(KG==0){
if(Xpos==0){
if((PosFromInd==0)||(PosFromInd==2)||(PosFromInd==4)){
return(-1);
}
}else{
if(Xpos==CellWidth-1){
if(PosFromInd==3){
return(-1);
}
}
}
if(Ypos==0){
if((PosFromInd==0)||(PosFromInd==1)){
return(-1);
}
}else{
if(Ypos==CellHeight-1){
if((PosFromInd==4)||(PosFromInd==5)){
return(-1);
}
}
}
if(PosFromInd==0){
return(Ind-CellWidth-1);
}
if(PosFromInd==1){
return(Ind-CellWidth);
}
if(PosFromInd==2){
return(Ind-1);
}
if(PosFromInd==3){
return(Ind+1);
}
if(PosFromInd==4){
return(Ind+CellWidth-1);
}
if(PosFromInd==5){
return(Ind+CellWidth);
}else{
return(-1);
}
}
if(KG==1){
if(Xpos==0){
if(PosFromInd==2){
return(-1);
}
}else{
if(Xpos==CellWidth-1){
if((PosFromInd==1)||(PosFromInd==3)||(PosFromInd==5)){
return(-1);
}
}
}
if(Ypos==0){//Not Passing,maybe...
if((PosFromInd==0)||(PosFromInd==1)){
return(-1);
}
}else{
if(Ypos==CellHeight-1){
if((PosFromInd==4)||(PosFromInd==5)){
return(-1);
}
}
}
if(PosFromInd==0){
return(Ind-CellWidth);
}
if(PosFromInd==1){
return(Ind-CellWidth+1);
}
if(PosFromInd==2){
return(Ind-1);
}
if(PosFromInd==3){
return(Ind+1);
}
if(PosFromInd==4){
return(Ind+CellWidth);
}
if(PosFromInd==5){
return(Ind+CellWidth+1);
}else{
return(-1);
}
}
}
GesiGesi(int Ind)
{
int m[];
int i,j,mi,mj,F;
//変数初期化
for(i=0;i<=CellAll;i=i+1){
m[i]=0;
}
m[1]=Ind;
mi=1;mj=1;F=1;
while(F==1){
for(i=0;i<=5;i=i+1){
j=Numret(m[mi],i);
if(j>(-1)){
if((opcell[j]==0) && (Flag[j]==0)){
TransferCellA(j);
opcell[j]=1;
OpenNo=OpenNo+1;
if(cell[j]==0){
mj=mj+1;
m[mj]=j;
}
}
}
}
if(mi==mj){
F=0;
}else{
mi=mi+1;
}
}
}
int Hantei()
{
if(CellAll-OpenNo==BOMB){
return 1;
}else{
return (-1);
}
}
int CheckLevel()
{
//現在のレベルのチェックをする関数
if(CellXTemp==8 && CellYTemp==8 && BOMBTemp==10){//初級
return 1;
}
if(CellXTemp==16 && CellYTemp==16 && BOMBTemp==40){//中級
return 2;
}
if(CellXTemp==30 && CellYTemp==16 && BOMBTemp==99){//上級
return 3;
}
return 4;//その他の場合
}
InputHighScore()
{
//このルーチンは、ハイスコアの名前入力ウィンドウ生成
//のためのものです。
int c,eflag;
eflag=1;
if(Level==1){
if(BeginScore>=Score){
BeginScore=Score;
}else{
eflag=0;
}
}
if(Level==2){
if(ImmeScore>=Score){
ImmeScore=Score;
}else{
eflag=0;
}
}
if(Level==3){
if(ExpertScore>=Score){
ExpertScore=Score;
}else{
eflag=0;
}
}
if(Level==4){
eflag=0;
}
if(eflag==1){
WinKind=1;//Win番号2の種類をハイスコア入力ウィンドウにする
c=CreatePic(1,200,100);
OpenWin(c,200,100,200,100,0,0,0xfffffff);//入力ウィンドウ(Window番号2)
//バック
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,c,0,0,200,100);
//ボタン
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,c,75,75,50,20);
//「OK」の文字
sScore=StrPrint("OK");
TextWrite(sScore,c,90,78);//パラメータはピクチャ番号
//「ハイスコアです!」の文字
sScore=StrPrint("ハイスコアです!");
TextWrite(sScore,c,10,0);//パラメータはピクチャ番号
//「名前を入力してください」の文字
sScore=StrPrint("Input your Name!");
TextWrite(sScore,c,10,20);//パラメータはピクチャ番号
}else{
//何もしない
}
}
HighNameInput()
{
//このルーチンは、ハイスコアのの名前入力時のキー入力で
//文字列を連結し、画面に表示し、データをINIファイルに
//書き込み、入力ウィンドウ、その画像を破棄するものです。
if(MesP2==13){//リターンが押されたら、
//そのレベルのハイスコアと名前を書き込む
if(Level==1){
sBeginHighName=sTempHighName;
}
if(Level==2){
sImmeHighName=sTempHighName;
}
if(Level==3){
sExpertHighName=sTempHighName;
}
//INIファイルに書き込む
WriteIniFile();
//テンポラリハイスコア名をnullにする。
sTempHighName="";
//入力ウィンドウ(Window番号2)を破棄する。
CloseWin(2);
//画像(Picture番号4)を破棄する
DelPic(4);
}else{
if(MesP2>=48 && MesP2<=90){//文字領域なら
//文字列をつなぎ
sTempHighName=sTempHighName+SubStr(ALPHA,MesP2-48,1);
//文字列を表示する
sScore=StrPrint("%s ",sTempHighName);
TextWrite(sScore,4,10,50);//パラメータはピクチャ番号
}
if(MesP2==8){//BSキーなら
//文字列を1文字削除し
//文字列を表示する
}
}
}
DispHighScore()
{
//このルーチンは、ハイスコアを表示するものです。
int c;
WinKind=0;//Win番号2のウィンドウの種類をハイスコア表示にする
c=CreatePic(1,200,200);
OpenWin(c,100,100,200,200,0,0,0xfffffff);//入力ウィンドウ(Window番号2)
//バック
MoveSPic(Pic0,0*PicCellX,0,PicCellX,PicCellY,c,0,0,200,200);
//ボタン
MoveSPic(Pic0,12*PicCellX,0,PicCellX,PicCellY,c,75,175,50,20);
//「OK」の文字
sScore=StrPrint("OK");
TextWrite(sScore,c,90,178);//パラメータはピクチャ番号
//初級のハイスコア
sScore=StrPrint("初級:%ld秒 %s ",BeginScore,sBeginHighName);
TextWrite(sScore,c,10,30);//パラメータはピクチャ番号
//中級のハイスコア
sScore=StrPrint("中級:%ld秒 %s ",ImmeScore,sImmeHighName);
TextWrite(sScore,c,10,50);//パラメータはピクチャ番号
//上級のハイスコア
sScore=StrPrint("上級:%ld秒 %s ",ExpertScore,sExpertHighName);
TextWrite(sScore,c,10,70);//パラメータはピクチャ番号
}
WriteIniFile()
{
//これは、ハイスコアを登録するためのルーチンです。
//初級のスコア、名前
WriteIniInt("brimine","time1", BeginScore,"brimine.ini");
WriteIniStr("brimine","name1",sBeginHighName,"brimine.ini");
//中級のスコア、名前
WriteIniInt("brimine","time2",ImmeScore,"brimine.ini");
WriteIniStr("brimine","name2",sImmeHighName,"brimine.ini");
//上級のスコア、名前
WriteIniInt("brimine","time3",ExpertScore,"brimine.ini");
WriteIniStr("brimine","name3",sExpertHighName,"brimine.ini");
}
ReadIniFile()
{
//これは、ハイスコアを読み出すためのルーチンです
//初級のスコア、名前
BeginScore=GetIniInt("brimine","time1",10000,"brimine.ini");
sBeginHighName=GetIniStr("brimine","name1","名前なし","brimine.ini");
//中級のスコア、名前
ImmeScore=GetIniInt("brimine","time2",10000,"brimine.ini");
sImmeHighName=GetIniStr("brimine","name2","名前なし","brimine.ini");
//上級のスコア、名前
ExpertScore=GetIniInt("brimine","time3",10000,"brimine.ini");
sExpertHighName=GetIniStr("brimine","name3","名前なし","brimine.ini");
}