Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
− | | + | {{widget:Iframe | url = http://tm.spbstu.ru/htmlets/js2020/Vyalov/1.html | width=600 | height=600 | border=0}} |
− | ==Описание==
| |
− | Don't touch the spikes - достаточно популярная игра c простым и понятным геймплеем
| |
− | | |
− | Автор: Вялов Тимофей 3630103/90003
| |
− | | |
− | ==Игра==
| |
− | {{#widget:Iframe | url = http://tm.spbstu.ru/htmlets/js2020/Vyalov/1.html | width=800 | height=800 | border=0}} | |
− | | |
− | ==Код программы==
| |
− | <div class="mw-collapsible mw-collapsed">
| |
− | '''Код программы на языке JavaScript:''' <div class="mw-collapsible-content">
| |
− | <syntaxhighlight lang="javascript" line start="1" enclose="div">
| |
− | | |
− | window.addEventListener('load',main,false);
| |
− | function main() {
| |
− | var ctx = canvas_example.getContext('2d');
| |
− | var w=canvas_example.width;
| |
− | var h=canvas_example.height;
| |
− | | |
− | var bird = new Image();
| |
− | var bird1 = new Image();
| |
− | var bg = new Image();
| |
− | var spike = new Image();
| |
− | var spike1 = new Image();
| |
− | var hscore = new Image();
| |
− | | |
− | bird.src = "img/bird.png";
| |
− | bird1.src = "img/bird1.png";
| |
− | bg.src = "img/bg.png";
| |
− | spike.src = "img/spike.png";
| |
− | spike1.src = "img/spike1.png";
| |
− | hscore.src = "img/hs.png";
| |
− | | |
− | | |
− | var x = 283; //координаты птицы
| |
− | var y = 290; //
| |
− | var vx = 0; //скорость по х
| |
− | var vy = 0; // скорость по у
| |
− | var g = 0; // ускорение у
| |
− | var t = 2; // условное время
| |
− | var a = 0 // ускорение х
| |
− | var l = 26; // длина шипов
| |
− | var q = 0;//для функции рандома
| |
− | var s = 0;//счет
| |
− | var hs = 0;//heigh score
| |
− | var c = 0;//complexity
| |
− | | |
− | | |
− | canvas_example.onmousedown = function() {
| |
− | vy = -3;
| |
− | t = 2.5 ;
| |
− | if(vx >= 0){
| |
− | vx = 3
| |
− | }
| |
− | else{
| |
− | vx = -3
| |
− | }
| |
− | g = 0.04;
| |
− | | |
− | }
| |
− | | |
− | function draw_bird() {
| |
− | vy += g*t;
| |
− | y = y + vy*t;
| |
− | | |
− | if (y>574){
| |
− | x =283;
| |
− | y = 290;
| |
− | vx = 0;
| |
− | vy = 0;
| |
− | g = 0;
| |
− | if(s>1){r = []};
| |
− | s = 0;
| |
− | c = 0;
| |
− | | |
− | }
| |
− | if (y<5){
| |
− | x =283;
| |
− | y = 290;
| |
− | vx = 0;
| |
− | vy = 0;
| |
− | g = 0;
| |
− | if(s>1){r = []};
| |
− | s = 0;
| |
− | c = 0;
| |
− | };
| |
− | if ((x>100)&&(x<500)&&(vx>0)){
| |
− | x +=vx
| |
− | }
| |
− | if ((x>410)&&(vx>0)){
| |
− | x = 412;
| |
− | vx = -vx;
| |
− | s++;
| |
− | if(c<=0.7){
| |
− | c+=0.02
| |
− | }
| |
− | }
| |
− | if ((x>100)&&(x<500)&&(vx<0)){
| |
− | x +=vx
| |
− | }
| |
− | if ((x<155)&&(vx<0)){
| |
− | x = 156;
| |
− | vx = -vx;
| |
− | s++;
| |
− | if(c<=0.7){
| |
− | c+=0.02
| |
− | }
| |
− | }
| |
− | | |
− | if (vy>3){
| |
− | vy = 3
| |
− | }
| |
− | t=t+0.05
| |
− | if (t>5){
| |
− | t = 5
| |
− | }
| |
− | if (vx>=0){
| |
− | ctx.drawImage(bird, x, y);
| |
− | }
| |
− | else{
| |
− | ctx.drawImage(bird1, x, y);
| |
− | }
| |
− | | |
− | }
| |
− | | |
− | var r = []
| |
− | function random_spike() {
| |
− | r = []
| |
− | for(var i = 0; i < 23; i++){
| |
− | q = Math.round(Math.random()-0.4+c)
| |
− | if (q ===1){
| |
− | r[i]=i*l;
| |
− | }
| |
− | }
| |
− | for(i = 1;i<23;i++){
| |
− | if(r[i]==undefined && r[i-1]!=undefined && r[i+1]!=undefined){r[i+1]=undefined}
| |
− | }
| |
− | | |
− | }
| |
− | | |
− | function draw_spike(){
| |
− | for(var j = 0; j < 23; j++){
| |
− | ctx.drawImage(spike, 150, r[j])
| |
− | }
| |
− | }
| |
− | function draw_spike1(){
| |
− | for(var j = 0; j < 23; j++){
| |
− | ctx.drawImage(spike1, 412, r[j])
| |
− | }
| |
− | }
| |
− | | |
− | function drawScore() {
| |
− | ctx.font = "35px Arial";
| |
− | ctx.fillStyle = "#0095DD";
| |
− | if(s<10){ctx.fillText(s, 291, 316)}
| |
− | else{ctx.fillText(s, 283, 316)}
| |
− | }
| |
− | function drawHeighScore() {
| |
− | ctx.font = "40px Arial";
| |
− | ctx.fillStyle = "#008080";
| |
− | ctx.fillText(hs, 460, 90)
| |
− | }
| |
− | | |
− | hscore.onload = draw_bird;
| |
− | //////////////////////////////////////////////////////////////////////////////
| |
− | setInterval(function() {
| |
− | ctx.drawImage(bg, 150, 0);
| |
− | ctx.drawImage(hscore, 450, 0);
| |
− | drawScore();
| |
− | if(s>hs){hs =s }
| |
− | drawHeighScore();
| |
− | draw_bird();
| |
− | if((x === 409) || (x === 156)){
| |
− | random_spike();
| |
− | }
| |
− | if (s>0 && vx<0){draw_spike();
| |
− | for (i=0;i<23;i++){
| |
− | if (y>r[i]-20 && y<r[i]+20 && x<160){
| |
− | x =283;
| |
− | y = 290;
| |
− | vx = 0;
| |
− | vy = 0;
| |
− | g = 0;
| |
− | if(s>1){r = []};
| |
− | s = 0;
| |
− | c = 0;
| |
− | }
| |
− | }}
| |
− | if (s>0 && vx>0){
| |
− | draw_spike1();
| |
− | for (i=0;i<23;i++){
| |
− | if (y>=r[i]-20 && y<=r[i]+20 && x>400){
| |
− | x =283;
| |
− | y = 290;
| |
− | vx = 0;
| |
− | vy = 0;
| |
− | g = 0;
| |
− | if(s>1){r = []};
| |
− | s = 0;
| |
− | c = 0;
| |
− | }
| |
− | }}
| |
− | }, 1000 / 60 );
| |
− | }
| |
− | | |
− | | |
− | </syntaxhighlight>
| |
− | </div>
| |