にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20221224103753

Unityで学ぶプログラミング  テトリス的を作る(13)得点表示

こんにちは!

テトリス的なものを作っていきます。

いよいよ、連載も終わりに近づいています。

なお、プログラムの内容は難しいので、初心者には向きませ
ん。いきなり作るのは厳しいのでよろしくお願いします。
また、説明も大幅に省いていきます。

``

最後に注意事項
ご紹介するのはあくまで「テトリス的」です。そのものでは
ありませんし、非常にシンプルに遊べるだけのものです。

連載終了後に、より詳しい技術的な解説&追加機能を加えた
電子書籍を発行する予定ですので、よろしくお願いします。


今回は得点表示です
今回は、得点表示の準備を進めていきます。
f:id:koharuwest:20210214102110p:plain
3つの3DTextを作成します。

f:id:koharuwest:20210214102141p:plain

これはLevelTextのものですが、参考までに。


変数はこんな感じにしておきましょう。

//得点など
public int Score=0;
public int Lines=0;
public int Level=0;

//文字の収納
GameObject SC;
GameObject LN;
GameObject LV;


start()の中にこれを追加します。

//背景と文字を発見して
SC=GameObject.Find("ScoreText");
LN=GameObject.Find("LineText");
LV=GameObject.Find("LevelText");



次にchkLines()ですが、

void chkLines(){
int i,j,k;

while(true){
for(j=0;j<20;j++){
comp=1;
for(i=2;i<14;i++){
if(stage[i,j]==0){
comp=0;
}
}
if(comp==1){
break;
}
}
if(comp==0){
break;
}

この直後に

Lines++;
//得点の加算
switch(Lines){
case 1:
Score=Score+100;
break;
case 2:
Score=Score+200;
break;
case 3:
Score=Score+500;
break;
case 4:
Score=Score+2000;
break;
default:
break;
}
//列を消去する

これを追加していきます。

最後にUpdate内に

//時間経過後
if(delta>=span){
 
//レベルの表示
LV.GetComponent<TextMesh>().text = "Level: "+Level.ToString ();
//得点の表示
SC.GetComponent<TextMesh>().text = "Score: "+Score.ToString ();
//ラインの表示
LN.GetComponent<TextMesh>().text = "Line: "+Lines.ToString ();

 

f:id:koharuwest:20210223181442p:plain



次回は、得点に応じてレベル調整をします。

 

f:id:koharuwest:20210117110657p:plain


それではよきプログラミングライフを!
またね。