Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2017/11/12 15:48:51

MixJuice GET URL : kidspod.club/mj/397

スターファイター亜空間脱出(IchigoLatte版)

【はじめまして】
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:敵機直進開始距離

SOURCE CODE

// 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);

COMMENT

Kidspod運営チーム
Kidspod運営チーム2017/11/17 19:58:52

Latte版まで作っていただきありがとうございます! LattePlayerの挙動は確かに妙ですね。原因を調べてみようと思います。