Vyalov

Материал из Department of Theoretical and Applied Mechanics
Версия от 17:53, 9 июня 2020; 188.18.225.144 (обсуждение)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Описание

Don't touch the spikes - достаточно популярная игра c простым и понятным геймплеем

Автор: Вялов Тимофей 3630103/90003

Игра

Код программы

Код программы на языке JavaScript:
  1 window.addEventListener('load',main,false);
  2 function main() {
  3   var ctx = canvas_example.getContext('2d');
  4   var w=canvas_example.width;
  5   var h=canvas_example.height;
  6 
  7   var bird = new Image();
  8   var bird1 = new Image();
  9   var bg = new Image();
 10   var spike = new Image();
 11   var spike1 = new Image();
 12   var hscore = new Image();
 13 
 14   bird.src = "img/bird.png";
 15   bird1.src = "img/bird1.png";
 16   bg.src = "img/bg.png";
 17   spike.src = "img/spike.png";
 18   spike1.src = "img/spike1.png";
 19   hscore.src = "img/hs.png";
 20 
 21 
 22   var x = 283; //координаты птицы
 23   var y = 290; //
 24   var vx = 0; //скорость по х
 25   var vy = 0; // скорость по у
 26   var g = 0; // ускорение у
 27   var t = 2; // условное время
 28   var a = 0 // ускорение х
 29   var l = 26; // длина шипов
 30   var q = 0;//для функции рандома
 31   var s = 0;//счет
 32   var hs = 0;//heigh score
 33   var c = 0;//complexity
 34 
 35 
 36   canvas_example.onmousedown = function() {
 37       vy = -3;
 38       t = 2.5 ;
 39       if(vx >= 0){
 40         vx = 3
 41       }
 42       else{
 43         vx = -3
 44       }
 45       g = 0.04;
 46 
 47 }
 48 
 49   function draw_bird() {
 50    vy += g*t;
 51    y = y + vy*t;
 52 
 53    if (y>574){
 54    x =283;
 55    y = 290;
 56    vx = 0;
 57    vy = 0;
 58    g = 0;
 59    if(s>1){r = []};
 60    s = 0;
 61    c = 0;
 62 
 63  }
 64    if (y<5){
 65      x =283;
 66      y = 290;
 67      vx = 0;
 68      vy = 0;
 69      g = 0;
 70      if(s>1){r = []};
 71      s = 0;
 72      c = 0;
 73    };
 74    if ((x>100)&&(x<500)&&(vx>0)){
 75      x +=vx
 76    }
 77    if ((x>410)&&(vx>0)){
 78      x = 412;
 79      vx = -vx;
 80      s++;
 81      if(c<=0.7){
 82        c+=0.02
 83      }
 84    }
 85    if ((x>100)&&(x<500)&&(vx<0)){
 86      x +=vx
 87    }
 88    if ((x<155)&&(vx<0)){
 89      x = 156;
 90       vx = -vx;
 91       s++;
 92       if(c<=0.7){
 93         c+=0.02
 94       }
 95    }
 96 
 97    if (vy>3){
 98      vy = 3
 99    }
100    t=t+0.05
101    if (t>5){
102      t = 5
103    }
104    if (vx>=0){
105    ctx.drawImage(bird, x, y);
106     }
107    else{
108   ctx.drawImage(bird1, x, y);
109       }
110 
111  }
112 
113   var r = []
114   function random_spike() {
115     r = []
116     for(var i = 0; i < 23; i++){
117       q = Math.round(Math.random()-0.4+c)
118       if (q ===1){
119         r[i]=i*l;
120       }
121       }
122     for(i = 1;i<23;i++){
123       if(r[i]==undefined && r[i-1]!=undefined && r[i+1]!=undefined){r[i+1]=undefined}
124     }
125 
126     }
127 
128   function draw_spike(){
129     for(var j = 0; j < 23; j++){
130       ctx.drawImage(spike, 150, r[j])
131     }
132   }
133   function draw_spike1(){
134     for(var j = 0; j < 23; j++){
135       ctx.drawImage(spike1, 412, r[j])
136     }
137   }
138 
139   function drawScore() {
140       ctx.font = "35px Arial";
141       ctx.fillStyle = "#0095DD";
142       if(s<10){ctx.fillText(s, 291, 316)}
143       else{ctx.fillText(s, 283, 316)}
144   }
145   function drawHeighScore() {
146       ctx.font = "40px Arial";
147       ctx.fillStyle = "#008080";
148       ctx.fillText(hs, 460, 90)
149   }
150 
151 hscore.onload = draw_bird;
152 //////////////////////////////////////////////////////////////////////////////
153 setInterval(function() {
154   ctx.drawImage(bg, 150, 0);
155   ctx.drawImage(hscore, 450, 0);
156   drawScore();
157   if(s>hs){hs =s }
158   drawHeighScore();
159   draw_bird();
160   if((x === 409) || (x === 156)){
161     random_spike();
162   }
163   if (s>0 && vx<0){draw_spike();
164     for (i=0;i<23;i++){
165       if (y>r[i]-20 && y<r[i]+20 && x<160){
166       x =283;
167       y = 290;
168       vx = 0;
169       vy = 0;
170       g = 0;
171       if(s>1){r = []};
172       s = 0;
173       c = 0;
174     }
175     }}
176   if (s>0 && vx>0){
177     draw_spike1();
178     for (i=0;i<23;i++){
179       if (y>=r[i]-20 && y<=r[i]+20 && x>400){
180         x =283;
181         y = 290;
182         vx = 0;
183         vy = 0;
184         g = 0;
185         if(s>1){r = []};
186         s = 0;
187         c = 0;
188       }
189     }}
190 }, 1000 / 60  );
191 }