Javascript Game

<HTML>

<HEAD>
<TITLE>JS FALCON</TITLE>

<SCRIPT LANGUAGE="JavaScript">
<!--
var Flimit=9                            //for TEST PLAY (Fire Limit 0 to 9)
var BossTM=0                            //              (Boss test mode = 1)
var BossLM=700                          //              (Boss appearance)
var Easy=0

var timerID = null
var TimeCounter = 0
var INT = 25                            //interval
var k=0                                 //key buffer
var X=100                               //my chr XY
var Y=100
var DX=0                                //my chr move
var DY=0
var IX=0
var IY=0
var SDX=0
var SDY=0
var SIX=0
var SIY=0
var Endflg=0                            //Game End Flag
var ff=0                                //fire flag
var fc=0                                //fire counter
var FX = new Array(12)                  //fire XY
var FY = new Array(12)
var bf=0                                //bomb flag
var bc=0                                //bomb counter
var BX=0                                //bomb XY
var BY=-100
var BDX=0                               //bomb fall speed
var BDY=0
var Cname = new Array(2)                //clash image No
var Bflag=0                             //bomb FLAG
var GND=0                               //scroll flag
var EFX = new Array(8)                  //enemy fire XY
var EFY = new Array(8)
var EVX = new Array(8)                  //enemy fire speed
var EVY = new Array(8)
var Fmax = 3                            //enemy fire max
var EMX = 200                           //enemy missile XY
var EMY = 284
var PTN = 0                             //enemy missile paturn
var Mvx = 0                             //enemy missile speed
var Mvy = 0
var mCount = 100                        //missile timer
var EX = new Array(20)                  //enemy XY
var EY = new Array(20)
var CH = new Array(2)                   //cobra Yspeed
var CW = new Array(2)                   //cobra Xspeed
var tmp1 = 0
var tmp2 = 0
var Endflg = 1
var Bossflg = 0
var BossX = 0                           //Boss X
var BossH = 0                           //Boss Canon H (170 to 220)
var CanonX=-200                         //Canon X,Y,counter
var CanonY=-200
var CanonC=0
var Bossflg=0
var tmpBF=0
var sf=0                                //Start flag
var spCOUNT=0


//IE check
 systm=""
 ver=navigator.appVersion
 len=ver.length
 for(iln=0;iln<len;iln++) if(ver.charAt(iln)=="(") break
 systm = ver.charAt(iln+1).toUpperCase()

 


// ---------------------------------
// ======== Main function ==========
// ---------------------------------

function interval1(){
 clearTimeout(timerID)

 // --------- Clash image clear -----------
  ccount0=ccount0+1
  if (ccount0 >= 2){cla0.left=-100}
  ccount1=ccount1+1
  if (ccount1 >= 2){cla1.left=-100}
  ccount2=ccount2+1
  if (ccount2 >= 2){cla2.left=-100}

 // --------- Enemy fire level up -----------
 TimeCounter=TimeCounter+1
 with (Math){Fmax=floor(TimeCounter/100)+3}
 if (Fmax >= Flimit){Fmax=Flimit}
 if (TimeCounter == Blimit){Bossflg=1;tmpbgc=100;tmpbgf=0}
 if (Bossflg >= 1){
  tmpbgc=tmpbgc-5
  if (tmpbgc >= 0){
   if (systm!="C"){}
  }
  if (tmpbgf == 0){
   if (tmpbgc <= 0){
    if (systm!="C"){
     tmpbgf=1
    }else{
     tmpbgf=1
    }
   }
  }
  tmpBF=0
  for (tmp1=0; tmp1<10; tmp1++){
   if (EX[tmp1] >= -50){tmpBF=1}
  }
  if (tmpBF == 0){BossMode()}
 }


 // --------- GND move ----------
 GND=GND-1;if (GND <= -16){GND=0}
 GNDs.left=GND


 // ---------- Mig23 move   enemy No =0,1,2   Layer No =27,28,29 ---------
 with (Math) {
  for (tmp1=0; tmp1<3; tmp1++){
   EX[tmp1]=EX[tmp1]-5
   if (EX[tmp1] <= -30){
    if (floor(random()*12) == 3 ){
     if (Bossflg == 0){EX[tmp1]=400;EY[tmp1]=floor(random()*12)*20+20}
    }
   }
  spMOV(27+tmp1,EX[tmp1],EY[tmp1])
  with (Math){if (floor(random()*5) == 3 ){Efire(EX[tmp1],EY[tmp1])}}
  }
 }

 // ---------- cobra move  enemy No =3,4,5  Layer No =30,31,32 ----------
 if (TimeCounter >= 300){
  with (Math) {
   for (tmp1=3; tmp1<6; tmp1++){
    EX[tmp1]=EX[tmp1]-CW[tmp1-3]
    if (EY[tmp1] <= 5){CH[tmp1-3]=2;CW[tmp1-3]=4}
    if (EY[tmp1] >= 240){CH[tmp1-3]=-2;CW[tmp1-3]=2}
    EY[tmp1]=EY[tmp1]+CH[tmp1-3]
    if (EX[tmp1] <= -30){
     if (floor(random()*12) == 3 ){
      if (Bossflg == 0){EX[tmp1]=400;EY[tmp1]=floor(random()*12)*20+20}
     }
    }
   spMOV(27+tmp1,EX[tmp1],EY[tmp1])
   with (Math){if (floor(random()*5) == 3 ){Efire(EX[tmp1],EY[tmp1])}}
   }
  }
 }

 // ---------- shilka move  enemy No =6,7,8  Layer No =33,34,35 ----------
 if (TimeCounter >= 200){
  with (Math){tmpTM=TimeCounter-floor(TimeCounter/100)*100}
  if (tmpTM <= 40){tmpTMX=3}else{if (tmpTM <= 70){tmpTMX=1}else{tmpTMX=-1}}
  for (tmp1=0; tmp1<3; tmp1++){
   EX[tmp1+6]=EX[tmp1+6]-tmpTMX
   if (EX[tmp1+6] <= -30){
    if (EX[6] <= 365){
     if (EX[7] <= 365){
      if (EX[8] <= 365){
       if (Bossflg == 0){
        with (Math){if (floor(random()*40) == 3 ){EX[tmp1+6]=400}}
       }
      }
     }
    }
   }
  spMOV(33+tmp1,EX[tmp1+6],EY[tmp1+6])
  with (Math){if (floor(random()*5) == 3 ){Efire(EX[tmp1+6],EY[tmp1+6])}}
  }
 }

 // ---------- gecko move   enemy No =9  Layer No =36 ------------
 if (EX[9] <= -600){if (Bossflg == 0){EX[9]=400}}
 EX[9]=EX[9]-1;if (EX[9] <= 250){EX[9]=EX[9]-4}
 if (EX[9] == 365){EMX=EX[9]+7;EMY=EY[9]-10;mCount=0}
 if (EX[9] == 310){EMX=EX[9]+7;EMY=EY[9]-10;mCount=0}
 if (EX[9] == 255){EMX=EX[9]+7;EMY=EY[9]-10;mCount=0}
 spMOV(36,EX[9],EY[9])

 // ---------- bomb move -------------
 if (bf == 1){BX=X;BY=Y+30;bc=1;bf=0;BDX=12}
 if (bc == 1){
  BDY=BDY+2
  if (BDY == 10){
  spMOV(45+Bflag,-100,-100)
   Bflag=1
  }
  if (BDY >= 10){BDX=BDX+3;BX=BX+BDX}
  BY=BY+BDY;tmpBMX=-100;tmpBMY=-100
   for (tmp2=0; tmp2<10; tmp2++){
    if (BX >= EX[tmp2]-30){
     if (BX <= EX[tmp2]+16){
      if (BY >= EY[tmp2]-3){
       if (BY <= EY[tmp2]+16){
        tmpBMX=BX-8;tmpBMY=BY-4
       }
      }
     }
    }
   }
  if (BY >= 284){tmpBMX=BX-8;tmpBMY=244}
  if (tmpBMX != -100){
   spMOV(45+Bflag,-100,-100)
   spMOV(50,tmpBMX,tmpBMY)
   Bflag=0;ccount2=0;bc=0;BY=-100;BDX=0;BDY=0
   for (tmp2=0; tmp2<10; tmp2++){
    if (BX >= EX[tmp2]-56){
     if (BX <= EX[tmp2]+40){
      if (EY[tmp2] >= tmpBMY-18){
       if (EY[tmp2] <= tmpBMY+63){
        spMOV(33+tmp2,-100,-100)
        spMOV(Cname[cflag],EX[tmp2],EY[tmp2]-6)
        if (cflag == 0){ccount0=0}else{ccount1=0}
        cflag=cflag+1;if (cflag >= 2){cflag=0}
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript游戏中的代码如下所示: 1. 实现了游戏结束时的取消按钮点击事件和再来一把按钮点击事件,它们分别会重置游戏并隐藏游戏结束的弹窗: ``` cancel_btn.onclick = function () { for(var i = 0; i < snake.length; i++) { draw(snake[i], "White"); } draw(food, "White"); init_game(); game_over_div.style.display = "none"; } once_again_btn.onclick = function () { for(var i = 0; i < snake.length; i++) { draw(snake[i], "White"); } draw(food, "White"); init_game(); game_over_div.style.display = "none"; run_id = requestAnimationFrame(game_control); } ``` 2. 实现了游戏结束时的操作,包括暂停动画、显示得分和显示游戏结束的弹窗: ``` function game_over() { cancelAnimationFrame(run_id); game_over_score.innerText = "您的最终得分为: " + score + "分"; game_over_div.style.display = "block"; } ``` 3. 实现了游戏的控制函数,用于控制蛇的运动频率: ``` function game_control() { if(enabled) { enabled = false; requestAnimationFrame(run_game); setTimeout(() => enabled = true, time_internal); } run_id = requestAnimationFrame(game_control); } ``` 4. 实现了游戏的主运行函数,其中包括蛇的移动、判断游戏是否结束、更新得分和食物等操作: ``` function run_game() { syncMode(); n = snake + direction; snake.unshift(n); if (snake.indexOf(n, 1) > 0 || n < 0 || n > 399 || (direction == 1 && n % 20 == 0) || (direction == -1 && n % 20 == 19)) { game_over(); } draw(n, "#1a8dcc"); draw(snake<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaScript实现贪吃蛇小游戏](https://blog.csdn.net/qq_45801299/article/details/121171367)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snowguy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值