【はじめまして】
IchigoLatteで初めてのプログラミング。
まだ慣れておらず、作法違いのコーディングをしているかも。
同タイトルのIchigoLatte版(JavaScript版)です。
IchigoJam版と異なる部分だけ記載するので、一通りIchigoJam版をご覧ください。
チャートもIchigoJam版と共用になっています。
【遊び方】
・「MS .」すると、ゲームを開始します。
・カーソルキーの左右で、自機を操作
します。
・注意:
なぜかLattePlayerだと、初回の右側の
航路衝突判定が一つ早く行われます。
2機目からは大丈夫です、なぜだろう?
それとLatte版は音がありません。
【変数表】
ソースコード冒頭がパラメータ関連です。
(1)基本
Rst:自機残数
Sco:点数
Sco1Up:1UP間隔点数
Spd:ゲーム速度
SpdLim:ゲーム速度極限値(最速)
(2)亜空間航路関連
RodLen:航路長
RodX:航路左座標
RodW:航路幅
RodWLim:航路幅極限値(最小)
(3)自機(スターファイター)関連
FigX:自機横座標
FigY:自機縦座標
FigYLim:自機縦座標極限値(最上)
(4)敵機(UFO)関連
UfoX:敵機横座標
UfoY:敵機縦座標
UfoStr:敵機直進開始距離

// INI
var Rst=3;
var Sco=0;
var Sco1Up=100;
var Spd=90;
var SpdLim=40;
var RodLen=19;
var RodX=12;
var RodW=7;
var RodWLim=4;
var FigX=RodW/2+1;
var FigY=RodLen-3;
var FigYLim=5;
var UfoX=FigX;
var UfoY=0;
var UfoStr=2;
//
// SCREEN
//
function drwScr(){
cls();
var i=0;
while(i<RodLen){
lc(RodX,i);
log(chr(0x85));
lc(RodX+RodW+1,i);
log(chr(0x8a));
i=i+1;
}
if(FigX>RodW){FigX=RodW;}
if(FigX<1 ){FigX=1;}
UfoY=0;
while(inkey());
}
//
// MOVE
//
function movChr(){
lc(RodX+FigX,FigY );
log(" ");
lc(RodX+FigX,FigY+1);
log(" ");
lc(RodX+UfoX,UfoY );
log(" ");
var key=0;
key=inkey();
FigX=FigX
+(key==0x1d)-(key==0x1c);
if(UfoY>=RodLen){
UfoY=-1;
UfoX=rnd(RodW)+1;
}
if(UfoY<(FigY-UfoStr))
{UfoX=UfoX+rnd(3)-1;}
if(UfoX<1 ){UfoX=1; }
if(UfoX>RodW ){UfoX=RodW; }
if(UfoY<RodLen){UfoY=UfoY+1;}
lc(RodX+FigX,FigY);
log(chr(0xf1));
lc(RodX+UfoX,UfoY);
log(chr(0xfa));
}
//
// SCORE
//
function getSco(){
if(UfoY<RodLen){return 0;}
Sco=Sco+10;
if(Sco%Sco1Up ){return 1;}
lc(RodX,RodLen+2);
log("1UP!");
sleep(500);
lc(RodX,RodLen+2);
log(" ");
Rst=Rst+1;
if(RodW>RodWLim){
RodW=RodW-1;
drwScr();
}
if((RodW<=RodWLim)
*(Spd>=SpdLim))
{Spd=Spd-15;}
if((Spd<=SpdLim)
*(FigY>FigYLim))
{FigY=FigY-1;}
}
//
// CRUSH
//
function crsFig(){
if(((1<=FigX)*(FigX<=RodW))
*((FigX!=UfoX)+(FigY!=UfoY))
){return;}
lc(RodX+FigX,FigY);
log("*");
sleep(300);
Rst=Rst-1;
drwScr();
}
//
// MAIN
//
drwScr();
var w=1;
while(w){
movChr();
getSco();
crsFig();
lc(0,1);
log("SCORE=",Sco);
lc(0,2);
log(chr(0xf1),"=",Rst);
sleep(Spd)
if(Rst<1){w=0;}
}
lc(0,4);
log("GAME OVER");
lc(0,6);