quarta-feira, 24 de junho de 2009

Drunk Drive

O jogo Drunk Drive é um jogo de sobrevivência, aonde o carro é controlado pelo acelerômetro do macbook e seu objetivo é passar de fase, desviando dos objetos que aparecerem na pista, como cones, outros carros e pedestres. Porém haverão também garrafas de bebida alcóolica para desviar. Passando por cima da bebida, o seu grau etílico sobe, tornando a direção cada vez mais difícil. Ficando cada vez mais difícil de desviar dos obstáculos e tambem aumentará a dificuldade de guiar através do percurso. A visão ficará turva e o tempo de resposta do carro ficara ainda mais lento e confuso. Pode-se ainda ver objetos duplicados na pista sem saber qual é o real e qual não é.

Ao contrario de jogos como esse: http://clickjogos.uol.com.br/Jogos-online/Esportes/Drunk-Driver/ , que utilizam os comandos do teclado, e com isso não traduzindo a realidade da dificuldade de se dirigir alcoolizado, o jogo Drunk Drive visa utilizar a movimentação corporal para imergir o jogador na experiência. Assim podendo vivenciar melhor as dificuldades encontradas na direção com alcool, e não só utilizar meios comuns para demonstrar isso (como as setas do mouse).

Imagens do jogo: Tela de jogo, mostra o personagem em boa situação com alguns obstáculos a serem desviados


Personagem com certo nivel de embriaguez após algumas batidas, avatar é atualizado.


Situação 3, jogador atropela uma pessoa sóbrio.

Situação 4, jogador atropela a garrafa e fica um pouco embreagado.

Para provar que é possível a produção do jogo, fizemos o estudo de um programa chamado Processing que será usado para fazer a programação do jogo. Chegamos a um código base para começar a programar o game. Fizemos isso com base em um dos exemplos, que se chama collision. Eis o código:

import sms.*;

 

// Global variables for the ball

float ball_x;

float ball_y;

float ball_dir = 2; // Velocidade da bola

float ball_size = 15;  // Radius

float dy = 0;  // Direction

 

// Global variables for the paddle

int paddle_width = 10;

int paddle_height = 20;

 

int dist_wall = 40;

 

void setup()

{

  size(640, 360);

 

  noStroke();

  smooth();

  ball_y = height;

  ball_x = width/2;

}

 

void draw()

{

  int Meux = Unimotion.getSMSX();

  int Meuy = Unimotion.getSMSY();

 

 

  //essa parte mostra os valores de Meux e Meuy

  println("Meux="+Meux);

  println("Meuy="+Meuy);

 

  background(51);

  //aqui to mudando a direção da bola

 

  ball_x = ball_x + dy;

  ball_y = ball_y + ball_dir;

 

  // se a bola sair da tela ela volta pra cima

  if(ball_y > 360) {

    ball_x = 320;

    ball_y = 0;

    dy = 0;

  }

 

  // Posicao do paddle. troquei x por y. Constrain to screen

  float paddle_x = Meux + 300;

 

 

  // Test to see if the ball is touching the paddle, PAREI AQUI!!!!

  // Colidir a bola com paddle

  if(ball_y >= 325

     && ball_y > paddle_x - paddle_height - ball_size

     && ball_y <>

    ball_dir *= 0;

   

  }

 

  // If ball hits paddle or back wall, dont reverse

  if(ball_y < ball_dir ="="">

    ball_dir *= 0;

  }

 

  // If the ball is touching top or bottom edge, reverse direction

  if(ball_y > height-ball_size) {

    dy = dy * -1;

  }

  if(ball_y <>

    dy = dy * -1;

  }

 

 

 

  // Draw ball

  fill(255);

  ellipse(ball_x, ball_y, ball_size, ball_size);

 

  fill(255);

  rect(45,45,35,35);

 

  fill(153);

  triangle(20,20,20,200,45,200);

 

 

 

  // Draw the paddle

  fill(153);

  rect(height-dist_wall,paddle_x, paddle_width, paddle_height); 

}

 

 


Nenhum comentário:

Postar um comentário