2016年06月29日

IoT:IchigoLatte ver 0.9.1が出たので対応させました

IchigoLatte ver 0.9.1が出たので対応させました。(配列の個数が64だったのが32に戻った)

IchigoLatteを楽しもう

投稿者 openspc : 10:09 | コメント (0)

2016年06月28日

IoT:「IchigoLatteを楽しもう」のページを最新版 (ver 0.9)に対応させました。

「IchigoLatteを楽しもう」のページを最新版 (ver 0.9)に対応させました。sin32()はなくなり、より高速なsin8()になっています。EEPROMやI2Cへの書き込みや保存もできるようになりました。

IchigoLatteを楽しもう

投稿者 openspc : 13:32 | コメント (0)

2016年06月22日

IchigoLatte:ファン○ジー○ーンの1面のボス戦のようなゲーム

IchigoLatte ver 0.8用のゲームです。まあ、ファン○ジー○ーンの1面のボス戦のようなゲームです。

動画(Twitter)

ボスの口から吐き出される葉っぱ(棒ですが)を避けつつ、ボスの口を撃って倒してください。葉っぱ(棒みたいですが)に当たると即ゲームオーバーです。自機はカーソルキーの上下左右で動かすことができます。ショットはスペースキーです。ボスの耐久度は口の所に表示されており0になるとゲームクリアとなります。なお、無敵状態にしたい場合はif(scr(fx,fy)>31){の31を331などに変更してください。
どのくらいのサイズの大きさの敵まで表示してもゲームになるのか、というテストも兼ねています。結構速かったので処理間隔(タイマー)はゆっくりにしてあります。かなり大きい敵(キャラクタ)を表示しても大丈夫そうな感じです。また、思ったほどちらつきません。

IchigoLatteを楽しもうのページからもダウンロードできます。
IchigoLatteを楽しもう

// Boss 1
var leaf=new Array();
var fx=5,fy=11;
var bx=0,by=-1,k=0;
var bossX=22,bossY=11,pow=3;
var n=0,r=0;
while(n<6){
var p=n*5;
leaf[p]=0; // Flag
leaf[p+1]=-1; // X
leaf[p+2]=-1; // Y
leaf[p+3]=0; // dy
leaf[p+4]=rnd(9); // rotate
n=n+1;
}
function key(n){ k=n; }
function main(){
// move fighter
if((k==28)*(fx>0)){fx=fx-1;}
if((k==29)*(fx<21)){fx=fx+1;}
if((k==30)*(fy>2)){fy=fy-1;}
if((k==31)*(fy<21)){fy=fy+1;}
if((k==32)*(by<0)){bx=fx;by=fy;}
k=0;
// start leaf
if(rnd(10)<4){
var n=0;
while(n<6){
var p=n*5;
if(leaf[p]==0){
leaf[p]=1;
leaf[p+1]=bossX*10;
leaf[p+2]=bossY*10;
leaf[p+3]=fy-bossY;
n=99;
}
n=n+1;
}
}
// move boss
bossY=11+sin32(r)/1800;
r=r+5;
cls();
lc(bossX,bossY-4);log("#######");
lc(bossX,bossY-3);log("#o#####");
lc(bossX,bossY-2);log("#######");
lc(bossX,bossY-1);log("#######");
lc(bossX,bossY);log(pow,"######");
lc(bossX,bossY+1);log("#######");
// move leaf
var n=0;
while(n<6){
var p=n*5;
if(leaf[p]==1){ // to left
leaf[p+1]=leaf[p+1]-10;
if(leaf[p+1]<10){ leaf[p]=0; }
leaf[p+2]=leaf[p+2]+leaf[p+3];
if((leaf[p+2]<0)+(leaf[p+2]>210)){ leaf[p]=0; }
leaf[p+4]=leaf[p+4]+1;
lc(leaf[p+1]/10,leaf[p+2]/10);
var a=leaf[p+4]%4;
if(a==0){ log("-"); }
if(a==1){ log("/"); }
if(a==2){ log("|"); }
if(a==3){ log("\\"); }
}
n=n+1;
}
// move beam
if((bx<29)*(by>-1)){
bx=bx+1;
lc(bx,by);log("--");
if(bx==28){ by=-1; }
}
if(scr(fx,fy)>31){
lc(11,9);
log("Game Over");
lc(0,0);
exit();
}
lc(fx,fy);log(">");
if((bx==bossX)*(by==bossY)){
pow=pow-1;
by=-1;
if(pow<1){
lc(11,9);
log("Game Clear!");
lc(0,0);
exit();
}
}
setTout(main,50);
}
setKprs(key);
main();

投稿者 openspc : 16:47 | コメント (0)

ファン○ジー○ーンの6面のボス戦をIchigoLatte ver 0.8.1の機能を使って作ってみました

ファン○ジー○ーンの6面のボス戦をIchigoLatte ver 0.8.1の機能を使って作ってみました。
回転する@マークに当たらないように自機を操作し、中央にあるボス本体を撃って倒してください。中心部本体の数値はボスの体力を示しています。0にすればゲームクリアです。回転する@マークに当たると即ゲームオーバーです。
自機はカーソルキーの上下左右で動かすことができます。ショットはスペースキーです。
なお、本物の某ゲーム同様にボス中心部の上下は安全地帯になってます。ただし、この隙間に入ってしまうとボスは倒せません。また、本物と同様に@マークはどんどん高速回転していきます(高速回転した挙げ句逆回転状態になるのも本物と同様です)。なお、無敵状態にしたい場合はif(scr(fx,fy)>31){の31を331などに変更してください。

実際に動いているゲーム画面
ファンタジーゾーン6面のボスシーン

「IchigoLatteを楽しもう」のページからもダウンロードできます。

IchigoLatteを楽しもう


// Boss 6
var fx=5,fy=11,rr=3000,ra=1;
var bx=0,by=-1,k=0;
var bossX=16,bossY=11,pow=5;
function key(n){ k=n; }
function main(){
// move fighter
if((k==28)*(fx>0)){fx=fx-1;}
if((k==29)*(fx<27)){fx=fx+1;}
if((k==30)*(fy>1)){fy=fy-1;}
if((k==31)*(fy<21)){fy=fy+1;}
if((k==32)*(by<0)){bx=fx;by=fy;}
k=0;
cls();
lc(bossX,bossY);log(pow);
// move leaf
var r=3,tr=rr/100;
while(r<16){
var n=0;
while(n<360){
var x=bossX+sin32(tr+n+90)*r/10000;
var y=bossY+sin32(tr+n)*r/10000;
lc(x-1,y);log("@@@");
n=n+60;
}
r=r+3;
}
// move beam
if((bx<29)*(by>-1)){
bx=bx+1;
lc(bx,by);log("--");
if(bx==28){ by=-1; }
}
if(scr(fx,fy)>31){
lc(11,9);
log("Game Over");
lc(0,0);
exit();
}
lc(fx,fy);log(">");
if((bx==bossX)*(by==bossY)){
pow=pow-1;
by=-1;
if(pow<1){
lc(11,9);
log("Game Clear!");
lc(0,0);
exit();
}
}
rr=rr+50+ra;
ra=ra+1;
setTout(main,30);
}
setKprs(key);
main();

投稿者 openspc : 03:40 | コメント (0)