Flappy Cow

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск

Описание

Реализация и визуализация аналога игры “Flappy Bird” - “Flappy Cow”

Исполнители: Мальцева О.Н., Клочко Д.А..

Группа 13632/1 Кафедра Теоретической механики

Текст курсового проекта: [[1]]

Основные правила

1.Управление производится клавишами вверх и вниз

2.“Коровка” не должна касаться травинок

3.Счёт ведётся с начала игры, вне зависимости от того, пройдет ли "корова" "травинку".

Визуализация

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

window.addEventListener("load", main, false);
function main() {
var ctx = canvas.getContext('2d');
var bird = new Image();
var bg = new Image();
var fg = new Image();
var pipeUp = new Image();
var pipeBottom = new Image();
var score = 0;
bird.src = 'img/korova.png';
bg.src = 'img/nebo.jpg'
fg.src = 'img/flappy_bird_fg.png';
pipeUp.src = 'img/flappy_bird_pipeUp.png'; 
pipeBottom.src = 'img/flappy_bird_pipeBottom.png'; 
var gap = 70;
var gravitation = 1;
var Posx = 10;
var Posy = 150;
//нажатие
document.addEventListener("keydown", moveUp);
function moveUp(){
  gravitation = -7;
}
var pipe = [];
pipe[0] = {
 x : canvas.width,
 y : 0
}
function draw(){
	ctx.clearRect(0,0, 288,512);
    ctx.drawImage(bg, -bg.width/2-90, 0);
    for (var i = 0; i < pipe.length; i++){
       ctx.drawImage(pipeUp, pipe[i].x, pipe[i].y);
       ctx.drawImage(pipeBottom, pipe[i].x, pipe[i].y + pipeUp.height + gap);
      pipe[i].x--;
      if (pipe[i].x == 125){
        pipe.push({
          x: canvas.width,
          y: Math.floor(Math.random() * pipeUp.height) - pipeUp.height
        });
      }
      if (Posx + bird.width >= pipe[i].x
        && Posx <= pipe[i].x + pipeUp.width
        && (Posy <= pipe[i].y + pipeUp.height
        || Posy + bird.height >= pipe[i].y + pipeUp.height + gap)
        || Posy + bird.height >= canvas.height - fg.height){
          location.reload();
        }
    }
    ctx.drawImage(fg, 0, canvas.height - fg.height);
    ctx.drawImage(bird, Posx, Posy);
    Posy += gravitation;
    if (gravitation != 1){
      gravitation += 1;
    }
         score++; some_name.innerHTML = score;
    console.log(pipe);
    requestAnimationFrame(draw);
}
pipeBottom.onload = draw;
}