06369

語らいの掲示板

HOME | Info (3/8) | Search | Mobile URL | Feed | Help | Admin | Rocket BBS

Name
Mail
URL
Subject
Color
/ Pass
SNECへのご意見、ご質問、その他何でもお気軽に書いていってくださいね!
(No Subject) / モルモット [ Mail ]
 まだ体験版ですが、ゲームを作るに当たって、シルエット素材 man3 をお借りしました。
 9月18日の第四回文学フリマ大阪及び、
サークルホームページhttp://melancholicmorumorun.web.fc2.com/
にて、配布しようと考えております。
 
No.1227 - 2016/09/16(Fri) 02:05:01
Re: NEW / ANGLE
モルモットさん、素材利用のご連絡ありがとうございます!
制作頑張って下さいね!
また何かあれば、是非ご利用下さい!
No.1228 - 2016/09/18(Sun) 21:14:39
他にも画像がリンク切れでした(汗) / みぃ
他にも後半、何枚かリンク切れの画像がありました。
使いたい画像もあるので、確認をよろしくお願いします。
No.1223 - 2015/05/27(Wed) 17:57:17
Re: 他にも画像がリンク切れでした(汗) / ANGLE
リンク切れのご連絡ありがとうございます。
一通り修正しましたので、よろしくお願いします。
(原因は何故か拡張子が大文字になっていたからでした……)
No.1224 - 2015/05/29(Fri) 23:31:39
Re: 他にも画像がリンク切れでした(汗) / みぃ
非常に早いお返事と対応、ありがとうございました。
これからもちょくちょく覗かせていただきます^^
No.1225 - 2015/06/01(Mon) 12:08:08
Re: 他にも画像がリンク切れでした(汗) / ANGLE
是非またご利用下さい。
今後ともよろしくお願いします。
No.1226 - 2015/06/01(Mon) 21:20:50
画像がリンク切れです / みぃ
ゲーム用写真素材の「その他ノンセクション」、
椅子が並んでいる画像〜二枚目の森の画像までがリンク切れでした。

まずはご報告まで
No.1222 - 2015/05/27(Wed) 17:50:20
インベーダーゲームのソースについて / TOM
はじめまして。

html初心者です。
下記のインベーダーゲームのソースをメモ帳にコピペしてデスクトップ上に保存し、ファイルを開いたところ、文字ばかりで画面が出ません。
画面が出るようにするにはどうすればいいか、ご教示いただけたら、幸いです。

*init
title"Invader"//タイトルの表示
#define winx 320//画面のXサイズ
#define winy 240//画面のYサイズ

//自機の初期設定
x=153.0:y=220.0//自機の初期位置
bsp=4.0//弾の移動速度

//敵の初期設定
dim ex,51//敵のX座標。方向転換用に+1しておく。
dim ey,50//敵のY座標
dim ef,50//敵が生きているフラグ
dim dead,50//敵が死んでいて消滅パターンを表示するフラグ
dim d_co,50//敵の消滅パターン表示用カウンタ
wt=0//ゲームスピード調整用
esp=1//敵の移動速度
di=0//敵の移動方向(0は右に移動する、1は左に移動する)
dim ebx,50//敵の弾X座標
dim eby,50//敵の弾Y座標
dim ebf,50//敵の弾フラグ

for i,0,50
ex.i=(i\10)*24//敵のX座標
if (i>=0 & i<10):ey.i=16//敵のY座標
if (i>=10 & i<20):ey.i=32//敵のY座標
if (i>=20 & i<30):ey.i=48//敵のY座標
if (i>=30 & i<40):ey.i=64//敵のY座標
if (i>=40 & i<50):ey.i=80//敵のY座標
ef.i=1//敵が生きているフラグ
dead.i=0//敵が死んでいて消滅パターンを表示するフラグ
d_co.i=0//敵の消滅パターン表示用カウンタ
next

//スコア
sc=0

screen 0,winx,winy,0//画面作成
cls 4//画面消去
pos 80,100:color 255,255,255:mes"Push space to start!"//スタート画面

*start
stick st//入力設定
if st=16:goto *start2//スペースキーで次へ
await//ウェイト
goto *start//戻る

*start2
cls 4//画面消去
pos 130,100:color 255,255,255:mes"Ready!"//ゲーム開始表示
await 1000//ウェイト

*main
redraw 0//画面を描画しない
color 0,0,0:boxf 0,0,winx,winy//黒で画面全体を塗り潰す

//弾を撃つ
stick s//スペースキーが押されているか判定する準備
if s=16 & bl=0:bl=1:bx=x+3:by=y-16//スペースキーが押されていて、画面上に弾がなければ弾が画面上にあるというフラグを1にして、弾の座標を自機の上に設定する

//左右に移動する
getkey left,37:if left=1:x-=2//カーソルキー左が押されていたら自機を左に移動する
getkey right,39:if right=1:x+=2//カーソルキー右が押されていたら自機を右に移動する
x=limit(x,0,winx-16)//自機のX座標の範囲を設定する

//自機表示
color 255,255,255:pos x,y:mes"凸"

//弾のフラグが立っていれば弾を表示する
if bl=1:{
color 255,255,255:pos bx,by:mes"|"//弾を表示する
by-=bsp:if by<-16:bl=0//弾のY座標を更新し、画面から消えたら弾が画面上にあるというフラグを0にする
}

//ゲームスピード
wt+=1:if wt>=wtmax:wt=0

//敵の移動
for i,0,50

//右へ移動する
if di=0 & wt=0:{
ex.50=0:rightmax=50//一番右にいる敵の座標を調べる準備

for j,0,50
if ef.j=0:_continue//敵が消滅していたら次の敵
if ex.rightmax=300:for k,i+1,50:ex.k+=esp:next:di=1:for i,0,50:ey.i+=16:next//一番右にいる敵が右端まで行ったら、以降の敵を右に移動し、移動方向を左にして、全ての敵のY座標を更新
}

//左へ移動する
if di=1 & wt=0:{
ex.50=320:leftmax=50//一番左にいる敵の座標を調べる準備

for j,0,50
if ef.j=0:_continue//敵が消滅していたら次の敵
if ex.j20:pt=1-pt:p_co=0//敵アニメ

for i,0,50
if ef.i=1:{//敵が生きていたら
color 255,0,0:pos ex.i,ey.i
if pt=0:mes"W"//敵表示(パターン0)
if pt=1:mes"V"//敵表示(パターン1)

}
if dead.i=1:color 255,0,0:pos ex.i,ey.i:mes"*":d_co.i++:if d_co.i=10:dead.i=0//敵の消滅パターン表示
next

//敵の弾
eb_count=0//画面上の敵の弾の数を数える準備
for i,0,50
eb_count+=ebf.i//画面上の敵の弾の数を数える
next

r=rnd(50)
if eb_count<4 & ef.r=1 & ebf.r=0:{//敵の弾が4つより少なく、その敵が生きていて弾を発射していない場合
ebf.r=1//敵の弾のフラグを立てる
ebx.r=ex.r+7//敵の弾のX座標を設定する
eby.r=ey.r+14//敵の弾のY座標を設定する
eb_count++//敵の弾のカウントを一つ増やす
}

for i,0,50
if ebf.i=1:eby.i+=2:if eby.i>320:ebf.i=0//敵の弾のフラグが立っていたらY座標を更新し、画面下に消えたらフラグを下げる
if ebf.i=1:color 255,0,0:pos ebx.i,eby.i:mes"|"//敵の弾のフラグが立っていたら表示する
next

//スコア表示
color 255,255,255
pos 10,0:mes"SCORE:"+sc
pos 120,0:mes"HI-SCORE:"+hi


//自機の弾の当たり判定
for i,0,50
if ef.i=0:_continue//敵が消滅していたら次の敵
if(abs(ex.i-bx+5)<=7 & abs(ey.i-by)<=14):{//自機の弾が敵に当たったら
ef.i=0 //敵のフラグを0にする
dead.i=1 //消滅パターン表示フラグを1にする
bl=0 //自機の弾のフラグを0にする
by=320 //自機の弾のY座標を画面外に設定
sc+=100:if sc>hi:hi=sc//スコア加算、ハイスコア更新
_break
}
next

//敵の弾の当たり判定
for i,0,50
if ebf.i=0:_continue//敵の弾がなければ次の弾
if(abs(x-ebx.i+5)<=7 & abs(y-eby.i)<=14):gosub *gameover_sub:goto *init//敵の弾が自機に当たったらゲームオーバーサブルーチンに飛び、ゲーム初期化
next

//クリア判定
cl=0//クリア判定フラグを初期化
for i,0,50
cl=cl+ef.i//全ての敵の生きているかどうかのフラグを足す
next
if cl=0:color 0,0,0:boxf 0,0,319,219:pos 130,100:color 255,255,255:mes"Clear!":redraw 1:await 2000:goto *init//敵が全滅していたらクリア表示し、初期設定に戻る

wtmax=cl/8.0//敵の残りが少ないほどゲームスピードをアップする
if cl<5:esp=2//敵の数が5より少なくなったら敵の移動速度を2にする
if cl=1:esp=4//敵の数が1になったら敵の移動速度を4にする

//ゲームオーバー判定
for i,0,50
if ef.i=0:_continue//敵が消滅していたら次の敵
if ey.i>=220:gosub *gameover_sub:goto *init//敵が下に達したらゲームオーバー表示し、初期設定に戻る
next

await 2//ウェイト
redraw 1//画面を描画する
goto *main//戻る

//ゲームオーバーサブ
*gameover_sub
color 0,0,0:boxf x,y,x+15,y+15 //自機を消去
color 255,255,255:pos x,y:mes"*" //自機の爆発パターンを表示
pos 120,100:color 255,255,255:mes"Game Over!" //ゲームオーバー表示
redraw 1 //画面を描画する
await 2000 //ウェイト
return
No.1219 - 2014/11/17(Mon) 18:35:53
Re: インベーダーゲームのソースについて / ANGLE
TOMさん、初めまして!
このソースなのですが、HTMLではなく、HSPというスクリプト言語のものです。
HSP公式サイトは下記です。
http://hsp.tv/
HTML5やJavascriptを使用すると同じようなものが作れると思います。
実は私も以前HTML+Javascriptで作ったものがあるので、ソースを貼りますね。
ただ、画像ファイルの利用規約が怪しいので、その辺はご自身で用意していただきたいと思います。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery-1.8.2.min.js"></script>
<script type="text/javascript">

var rx=200;//プレイヤーのX座標
var ry=400;//プレイヤーのY座標
var pmx=new Array(215,215,215,215,215);//プレイヤーミサイルのX座標
var pmy=new Array(380,380,380,380,380);//プレイヤーミサイルのY座標
var mf=new Array(0,0,0);//プレイヤーミサイルのフラグ
var ex=new Array(80,120,160,200,240,280,320,360,160,240,320,160,240,320,60,410);//敵のX座標
var ey=new Array(60,60,60,60,60,60,60,60,60,60,60,50,50,50,50,50);//敵のY座標
var ef=new Array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);//敵の生存フラグ
var ed=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵の移動方向
var emx=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵のミサイルX座標
var emy=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵のミサイルY座標
var emf=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵のミサイルフラグ
var bsx=145;//ボスのX座標
var bsy=-100;//ボスのY座標
var bsf=1;//ボスの生存フラグ
var bsl=20;//ボスのライフ
var bsd=false;//ボスのダメージフラグ
var bsd_co=8;//ボスのダメージ画像表示用カウンタ
var bslaserx=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//ボスレーザーX座標
var bslasery=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//ボスレーザーY座標
var bslsf=0;//ボスレーザー発射中フラグ
var clipy=0;//ボス登場クリップ領域
var sy=400;//スクロール量
var cy=-350;//スクロール画面表示位置
var score=0;//スコア
var exp=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//爆発フラグ
var exp_co=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//爆発アニメカウンタ
var vx=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0);//自機を狙う弾の移動量算出用
var vy=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0);//自機を狙う弾の移動量算出用
var staff=0;//スタッフロール終了フラグ

//プレイヤー移動処理
function player(event)
{
var bar=document.getElementById("bar");
rx=event.clientX-16;
ry=event.clientY-16;
if (50<=rx && rx+50<=450){
bar.style.left=rx;
}
if (50<=ry && ry+50<=450){
bar.style.top=ry;
}
}

//プレイヤーミサイル移動処理
function misile()
{
var TimeId=setTimeout("misile()",5);
for(j=0;j<=4;j++){
var ms=document.getElementById("misile"+j);
if(mf[j]){ //プレイヤーのミサイルがあれば
ms.style.left=pmx[j]; //プレイヤーミサイルX座標
ms.style.top=pmy[j]; //プレイヤーミサイルY座標
ms.style.visibility="visible"; //プレイヤーミサイル表示

//雑魚敵との当たり判定
for(i=0;i<=15;i++){//敵の数だけループ
var en=document.getElementById("enemy"+i);
if(Math.abs(pmx[j]-(ex[i]+16))<16 && Math.abs(pmy[j]-ey[i])<32 && en.style.visibility=="visible"){
mf[j]=0; //フラグを下ろす
ms.style.visibility="hidden"; //プレイヤーのミサイルを非表示にする
en.style.visibility="hidden"; //敵を非表示にする
ef[i]=0; //敵のフラグを下ろす
score+=100; //スコア加算
var sc=document.getElementById("score");
sc.value="Score:"+score;
exp[i]=1; //敵の爆発オン
exp_co[i]=0; //敵の爆発カウンタ
}
}

//ボスとの当たり判定
var bs=document.getElementById("boss");
if(Math.abs(pmx[j]-(bsx+90))<30 && Math.abs(pmy[j]-(bsy+75))<75 && bs.style.visibility=="visible"){
mf[j]=0; //プレイヤーのミサイルフラグを下ろす
ms.style.visibility="hidden"; //プレイヤーのミサイルを非表示にする
ms.style.top=-32;
bsl--; //ボスのライフを減らす
bs.src="img/boss-d.png"; //ボスダメージ用画像に切り替え
bsd=true; //ボスダメージフラグをオン
bsd_co=8; //ボスダメージ表示用カウンタ
if(bsl==0){ //ボスのライフが0なら
score+=1000; //スコア加算
var sc=document.getElementById("score");
sc.value="Score:"+score;
bsf=0; //ボス生存フラグを下ろす
startTime = new Date(); //ボス爆発アニメ時間カウント用
}
}

//上に移動
pmy[j]-=4; //プレイヤーミサイルY座標を更新
if(pmy[j]<46){ //画面の上に達したら
mf[j]=0; //フラグを下ろす
ms.style.visibility="hidden"; //非表示にする
}
}
}
}

//敵初期
function enemy_init()
{
setTimeout("enemy()",2000);
setTimeout("enemy2()",8000);
setTimeout("enemy3()",12000);
setTimeout("boss()",16000);
setTimeout("enemy4()",19000);
startTime = new Date();
var T_ID=setInterval("getTime();",200);//タイム計測スタート
}

//タイム計測
function getTime()
{
//ボスが生きていたら
if(bsf){
var currentTime = new Date();
time = Math.floor((currentTime - startTime) / 1000);
var tm=document.getElementById("time");
tm.value="Time:"+(60-time);
if(60-time==0) gameover();

//ボスを倒していてスタッフ表示していなければ
}else if(!bsf && staff==0){
var currentTime = new Date();
time = Math.floor((currentTime - startTime) / 1000);
if(time==2){

//敵を消す
for(i=0;i<=15;i++){
var en=document.getElementById("enemy"+i);
en.style.visibility="hidden";
}

//ボスを消す
var bs=document.getElementById("boss");
bs.style.visibility="hidden";

//爆発を消す
for(i=0;i<=22;i++){
var expl=document.getElementById("exp"+i);
expl.style.visibility="hidden";
}

//スタッフ表示
for(i=1;i<=5;i++){
var st=document.getElementById("staff"+i);
st.style.visibility='visible';
}
staff=1;
startTime = new Date();
}
//ボスを倒してスタッフ表示していたら
}else if(!bsf && staff==1){
var currentTime = new Date();
time = Math.floor((currentTime - startTime) / 1000);
if(time==15){
score=0;//スコアリセット
var sc=document.getElementById("score");
sc.value="Score:0";
time=0;//タイムリセット
var tm=document.getElementById("time");
tm.value="Time:60";
window.location.reload(); //ページをリロード
}
}
}


//敵1移動処理
function enemy()
{
var EneId=setTimeout("enemy()",10);

//移動
for(i=0;i<=7;i++){
if(ef[i] && staff==0){//生きていたら
var en=document.getElementById("enemy"+i);
en.style.left=ex[i];
en.style.top=ey[i];
en.style.visibility="visible";
if(ed[i]==0){
ex[i]--;
if(ex[i]<50){
ex[i]=50;
ey[i]+=32;
ed[i]=1;
}
}
if(ed[i]==1){
ex[i]++;
if(ex[i]>410){
ex[i]=410;
ey[i]+=32;
ed[i]=0;
}
}
if(ey[i]>420){
ef[i]=0;
var en=document.getElementById("enemy"+i);
en.style.visibility="hidden"; //非表示にする
}
}
enemy_attack();
}

//敵ミサイル
for(i=0;i<=7;i++){
//生きていたら
if(ef[i]){
var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生
if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら
emx[i]=ex[i];
emy[i]=ey[i]+32;
var em=document.getElementById("em"+i);
emf[i]=1;
em.style.left=emx[i];
em.style.top=emy[i];
em.style.visibility="visible";
}
}
//ミサイルがあったら
if(emf[i]){
var em=document.getElementById("em"+i);
em.style.top=emy[i];
emy[i]+=2;
if(emy[i]>450){
emf[i]=0;
em.style.visibility="hidden";
}

//当たり判定
enemy_misile();
}
}
}

//敵2移動処理
function enemy2()
{
var EneId=setTimeout("enemy2()",10);

//移動
for(i=8;i<=10;i++){
if(ef[i] && staff==0){//生きていたら
var en=document.getElementById("enemy"+i);
en.style.left=ex[i];
en.style.top=ey[i];
en.style.visibility="visible";
ey[i]++;
if(ex[i]%50==0){
ed[i]=1-ed[i];
}
if(ed[i]==0){
ex[i]-=4;
}
if(ed[i]==1){
ex[i]+=4;
}
if(ey[i]>420){
ef[i]=0;
var en=document.getElementById("enemy"+i);
en.style.visibility="hidden"; //非表示にする
}
}
enemy_attack();
}

//敵2ミサイル
for(i=8;i<=10;i++){
//生きていたら
if(ef[i]){
var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生
if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら
emx[i]=ex[i];
emy[i]=ey[i]+32;
var em=document.getElementById("em"+i);
emf[i]=1;
em.style.left=emx[i];
em.style.top=emy[i];
em.style.visibility="visible";
}
}
//ミサイルがあったら
if(emf[i]){
var em=document.getElementById("em"+i);
em.style.top=emy[i];
emy[i]+=2;
if(emy[i]>450){
emf[i]=0;
em.style.visibility="hidden";
}

//当たり判定
enemy_misile();
}
}
}

//敵3移動処理
function enemy3()
{
var EneId=setTimeout("enemy3()",10);

//移動
for(i=11;i<=13;i++){
if(ef[i] && staff==0){//生きていたら
var en=document.getElementById("enemy"+i);
en.style.left=ex[i];
en.style.top=ey[i];
en.style.visibility="visible";
if(ey[i]<150) ey[i]++;

}
enemy_attack();
}

//敵3ミサイル
for(i=11;i<=13;i++){
//生きていたら
if(ef[i]){
var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生
if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら
emx[i]=ex[i];
emy[i]=ey[i]+32;
var em=document.getElementById("em"+i);
emf[i]=1;
em.style.left=emx[i];
em.style.top=emy[i];
em.style.visibility="visible";
//自機を狙う弾
var xx=rx-ex[i];
var yy=ry-ey[i];
var l=Math.sqrt(xx*xx+yy*yy);
vx[i]=xx/l*4;//弾のX移動量
vy[i]=yy/l*4;//弾のY移動量

}
}
//ミサイルがあったら
if(emf[i]){
var em=document.getElementById("em"+i);
em.style.left=emx[i];
em.style.top=emy[i];
emy[i]+=vy[i];
emx[i]+=vx[i];
if(emy[i]>420||emy[i]<50||emx[i]<50||emx[i]>420){
emf[i]=0;
em.style.visibility="hidden";
}

//当たり判定
enemy_misile2();
}
}
}

//敵4移動処理
function enemy4()
{
var EneId=setTimeout("enemy4()",10);

//移動
for(i=14;i<=15;i++){
if(ef[i] && staff==0){//生きていたら
var en=document.getElementById("enemy"+i);
en.style.left=ex[i];
en.style.top=ey[i];
en.style.visibility="visible";
if(ey[i]<100) ey[i]++;
}
enemy_attack();
}

//敵4ミサイル
for(i=14;i<=15;i++){
//生きていたら
if(ef[i]){
var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生
if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら
emx[i]=ex[i];
emy[i]=ey[i]+32;
var em=document.getElementById("em"+i);
emf[i]=1;
em.style.left=emx[i];
em.style.top=emy[i];
em.style.visibility="visible";
//自機を狙う弾
var xx=rx-ex[i];
var yy=ry-ey[i];
var l=Math.sqrt(xx*xx+yy*yy);
vx[i]=xx/l*4;//弾のX移動量
vy[i]=yy/l*4;//弾のY移動量
}
}
//ミサイルがあったら
if(emf[i]){
var em=document.getElementById("em"+i);
em.style.left=emx[i];
em.style.top=emy[i];
emy[i]+=vy[i];
emx[i]+=vx[i];
if(emy[i]>420||emy[i]<50||emx[i]<50||emx[i]>420||bsf==0){
emf[i]=0;
em.style.visibility="hidden";
}

//当たり判定
enemy_misile2();
}
}
}

//ボス移動処理
function boss()
{
var BossId=setTimeout("boss()",10);

//移動
if(bsf){//生きていれば
var bs=document.getElementById("boss");
if(bsd){
bs.src="img/boss-d.png";//ボスダメージ画像
bsd_co--;
if(bsd_co<=0){
bsd=false;
}
}else{
bs.src="img/boss.png";//ボス通常画像

}

//ボス登場演出
if(bsy<50){
bsy++; //ボスY座標
clipy++; //クリップ領域Y座標上
bs.style.clip="rect("+(150-clipy)+",183,"+(150)+",0)";
}

bs.style.left=bsx;
bs.style.top=bsy;
bs.style.visibility="visible";

if((bsx+75)-rx>20 && bsx>65 && bsy==50 && bslsf==0){//ボス左移動判定
bsx-=1;
}else if(rx-(bsx+75)>20 && bsx<250 && bsy==50 && bslsf==0){//ボス右移動判定
bsx+=1;
}else if(Math.abs(rx-(bsx+75))<32 && bsy==50 && bslsf==0){//ボスレーザー発射判定
bslsf=1;
for(i=0;i<=19;i++){
var bsls=document.getElementById("laser"+i);
bslaserx[i]=bsx+73;
bslasery[i]=bsy+150-i*12;
bsls.style.top=bslasery[i];
bsls.style.left=bslaserx[i];
}
}
}else if(!bsf && staff==0){//やられていたら
for(i=16;i<=22;i++){
exp_co[i]++;//爆発アニメカウンタ
var expl=document.getElementById("exp"+i);
expl.style.visibility="visible"; //表示する
var exp_x=Math.floor(Math.random()*183);
var exp_y=Math.floor(Math.random()*150)-40;
expl.style.top=bsy+exp_y;
expl.style.left=bsx+exp_x;
if(exp_co[i]<2){
expl.src='img/exp1.png';
}else if(exp_co[i]<4){
expl.src='img/exp2.png';
}else if(exp_co[i]<6){
expl.src='img/exp3.png';
}else if(exp_co[i]<8){
expl.src='img/exp4.png';
}else if(exp_co[i]<10){
expl.src='img/exp5.png';
}else if(exp_co[i]>=10){
exp_co[i]=0;
}
}

}

//ボスレーザー
if(bslsf){
for(i=0;i<=19;i++){
var bsls=document.getElementById("laser"+i);
bsls.style.left=bslaserx[i];
bsls.style.top=bslasery[i];
bslasery[i]+=4;
if(bslasery[i]>200){//ある程度画面の下まで来たら非表示だったレーザーを表示する
bsls.style.visibility="visible";

}
if(bslasery[i]>440){//画面下に達したらレーザーを消す
bsls.style.visibility="hidden";
if(i==19){
bslsf=0;
}
}

//ボスレーザーとプレイヤーの当たり判定
if(Math.abs((bslaserx[i]+18)-(rx+16))<36 && Math.abs((bslasery[i]+6)-(ry+16))<12){
bslsf=0;
gameover();
}
}
}
}

//プレイヤーと敵との当たり判定
function enemy_attack()
{
var en=document.getElementById("enemy"+i);
if(Math.abs(ex[i]-rx)<32 && Math.abs(ey[i]-ry)<32 && en.style.visibility=="visible"){
ef[i]=0; //フラグを下ろす
en.style.visibility="hidden"; //非表示にする
gameover();
}
}

//敵のミサイルとプレイヤーの当たり判定
function enemy_misile()
{
if(Math.abs(emx[i]-(rx+16))<16 && Math.abs(emy[i]-ry)<32 && emf[i]==1){
var em=document.getElementById("em"+i);
emf[i]=0; //フラグを下ろす
em.style.visibility="hidden"; //非表示にする
gameover();
}
}

//敵のミサイル2とプレイヤーの当たり判定
function enemy_misile2()
{
if(Math.abs(emx[i]-rx)<24 && Math.abs(emy[i]-ry)<24 && emf[i]==1){
var em=document.getElementById("em"+i);
emf[i]=0; //フラグを下ろす
em.style.visibility="hidden"; //非表示にする
gameover();
}
}

//背景表示
function bg()
{
var BgId=setTimeout("bg()",40);
var obj=document.getElementById("bg");
obj.style.clip="rect("+sy+",400,"+(sy+400)+",0)";
obj.style.top=cy;
sy-=2;
cy+=2;
if(sy==0) {
sy=400;
cy=-350;
}

//爆発アニメ表示
for(i=0;i<=15;i++){
if(exp[i]==1){//爆発中のフラグ
exp_co[i]++;//爆発アニメカウンタ
var expl=document.getElementById("exp"+i);
expl.style.visibility="visible"; //表示する
expl.style.top=ey[i]-8;
expl.style.left=ex[i]-8;
if(exp_co[i]<2){
expl.src='img/exp1.png';
}else if(exp_co[i]<4){
expl.src='img/exp2.png';
}else if(exp_co[i]<6){
expl.src='img/exp3.png';
}else if(exp_co[i]<8){
expl.src='img/exp4.png';
}else if(exp_co[i]<10){
expl.src='img/exp5.png';
}else{
expl.style.visibility="hidden"; //非表示にする
exp[i]=0;
}
}
}
}

//ゲームオーバー処理
function gameover()
{
alert("GAME OVER!!");
score=0;//スコアリセット
var sc=document.getElementById("score");
sc.value="Score:0";
time=0;//タイムリセット
var tm=document.getElementById("time");
tm.value="Time:60";
window.location.reload(); //ページをリロード
}

</script>
</head>

<body onMouseMove="player(event)" onLoad="bg();misile();enemy_init()">
<div id="field">

<img src="img/wall.png" style="position:absolute;left:46;top:46">
<img id="bg" src="img/bg.png" style="position:absolute;left:50;top:50">
<img id="bar" src="img/player.png" style="position:absolute;left:200;top:400">

<form style="position:absolute;left:50;top:20;">
<input id="score" type="text" size="12" value="Score:0">
</form>

<form style="position:absolute;left:150;top:20;">
<input id="time" type="text" size="12" value="Time:60">
</form>

<script type="text/javascript">

//プレイヤーミサイル配置
for(i=0;i<=4;i++){
document.write("<img id='misile"+i+"' src='img/ms.png' style='position:absolute;visibility:hidden;'>");
}
//敵1配置
for(i=0;i<=7;i++){
document.write("<img id='enemy"+i+"' src='img/enemy1.png' style='position:absolute;left:"+(i*40+80)+";top:60;visibility:hidden;'>");//敵1
document.write("<img id='em"+i+"' src='img/ms.png' style='position:absolute;visibility:hidden;'>");//敵1のミサイル
}
//敵2配置
for(i=8;i<=10;i++){
document.write("<img id='enemy"+i+"' src='img/enemy2.png' style='position:absolute;left:"+(i*40+80)+";top:60;visibility:hidden;'>");//敵2
document.write("<img id='em"+i+"' src='img/ms.png' style='position:absolute;visibility:hidden;'>");//敵2のミサイル
}
//敵3配置及び敵4配置
for(i=11;i<=15;i++){
document.write("<img id='enemy"+i+"' src='img/enemy3.png' style='position:absolute;left:40;top:60;visibility:hidden;'>");//敵3
document.write("<img id='em"+i+"' src='img/ms2.png' style='position:absolute;visibility:hidden;'>");//敵3のミサイル
}
//ボス配置
document.write("<img id='boss' src='img/boss.png' style='position:absolute;visibility:hidden;'>");//ボス
for(i=0;i<=19;i++){
document.write("<img id='laser"+i+"' src='img/laser.png' style='position:absolute;visibility:hidden;'>");//ボスのレーザー
}

//爆発パターン
for(i=0;i<=22;i++){
document.write("<img id='exp"+i+"' src='img/exp1.png' style='position:absolute;visibility:hidden;'>");
}

//スタッフロール
document.write("<p id='staff1' style='color:#fff;position:absolute;top:100;left:160;visibility:hidden;'>Game Design & Program</p>");
document.write("<p id='staff2' style='color:#fff;position:absolute;top:120;left:160;visibility:hidden;'>ANGLE</p>");
document.write("<p id='staff3' style='color:#fff;position:absolute;top:200;left:160;visibility:hidden;'>Graphic Design</p>");
document.write("<p id='staff4' style='color:#fff;position:absolute;top:220;left:160;visibility:hidden;'>ASD</p>");
document.write("<p id='staff5' style='color:#fff;position:absolute;top:300;left:160;visibility:hidden;'>Thank you for playing!</p>");
//プレイヤーミサイル発射判定
$('#field').click(function(){ //フィールド内でクリックしたら
for(i=0;i<=4;i++){
if(!mf[i]){ //画面上にミサイルがなかったら
mf[i]=1; //ミサイルのフラグをオン
pmx[i]=rx+15; //ミサイルのX座標をプレイヤーのX座標と同じにする
pmy[i]=ry-30; //ミサイルのY座標を設定する
var ms=document.getElementById("misile"+i);
ms.style.left=pmx[i];
ms.style.top=pmy[i];
ms.style.visibility="visible";
break;
}
}
});
</script>
</div>
</body>
</html>
No.1220 - 2014/11/17(Mon) 21:45:28
Re: インベーダーゲームのソースについて / ANGLE
ちなみに前半はインベーダー風で、その後スクロールシューティングになって、ボスも出ます。
No.1221 - 2014/11/17(Mon) 21:48:34
リンク切れのご報告 / 魔
初めまして。
就活などに素材を利用させていただきます。
シルエット素材の下記のファイルがリンク切れのようです。
・男の子のシルエット11枚セット(40KB)
・ショートカットの女性のシルエット34枚セット(262KB)
お手数ですがご確認をお願いいたします。
No.1217 - 2014/05/13(Tue) 07:33:29
Re: リンク切れのご報告 / ANGLE
魔さん、初めまして。
リンク切れのご連絡ありがとうございます。
HTMLの記述ミスでした……。
修正しましたので、ダウンロードできるようになっています。
どうぞご利用下さい。
No.1218 - 2014/05/13(Tue) 23:11:11
素材の使用報告です。 / 杏鴉 [ Home ]
初めまして。
ゲーム製作サークルJUNK REFINERYの杏鴉(キョウア)と申します。
当方のフリーゲーム「斎果探偵事務所事件簿〜白紙の脅迫状〜」にて、
こちらの影絵素材を使用させていただきました。
どうもありがとうございました。
本日よりダウンロードを開始しております。

使用方法や権利表記等に問題ありましたら、
お手数ですが記載しているURL内の掲示板にご連絡ください。
早急に対応いたしますので。

それでは乱文長文失礼いたしました。
No.1215 - 2013/09/24(Tue) 22:12:54
Re: 素材の使用報告です。 / ANGLE
杏鴉さん、初めまして!
管理人のANGLEです。
素材利用のご連絡ありがとうございます。
そして、作品完成おめでとうございます!
素材に関しては特に制約を設けておりませんので、今後ともご入り用の際にはお気軽にご利用下さい(^^)
No.1216 - 2013/09/25(Wed) 23:06:02
(No Subject) / せんだい
今まで何度か素材利用でお世話になりました。
本題ですが、現在男性(man.lzh)の素材のダウンロードができません。
リンク切れのようですが、ご確認いただければ幸いです。
よろしくお願いします。
No.1213 - 2013/07/12(Fri) 11:00:50
Re: / ANGLE
リンク切れのご連絡ありがとうございます。
早速修正しました。
No.1214 - 2013/07/15(Mon) 15:36:36
以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
50/50件 [ ページ : 1 2 3 4 5 6 7 8 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - 環境設定 -

Rocket Board Type-LK (Free) Rocket BBS