quinta-feira, 26 de maio de 2011

AULA 5 - SCROLLING - "CÂMERA"

Para adicionarmos o scrolling temos que ter as seguintes variaveis de controle:
int map_move >> posição do mapa
bool scrolling >> indica se o scrolling está ativado
int posicao >> indica a posicao inicial no qual o scrolling será ativado
int posicaoFinal >> posicao final no qual o scrolling é novamente desativado

scrolling = false >> scrolling começa desativado até que o personagem chegue a marca da variavel "posicao"
posicao = 350; >> mais ou menos no meio da tela
posicaoFinal = -frente->w +800; >> ou -2800, poise o mapa inteiro tem 3600 de largura e o tamanho da tela é de 800

Para o cenario vamos utilizar duas imagens.. uma para a frente do cenario e outra para o fundo do cenario.. o fundo do cenario irá se movimentar mais lentamente:
BITMAP* frente;
BITMAP* fundo;
frente = load_bitmap("cenario2.bmp",NULL);
fundo = load_bitmap("cenario2back.bmp",NULL);

cenario2.bmp:


cenario2back.bmp:


Pintando o cenario na tela:
clear(backbuffer); >> limpa o backbuffer
draw_sprite(backbuffer,fundo,map_move/4,0); >> pinta o fundo do cenario em uma posição "x" 4 vezes menor que a frente do cenario, fazendo assim que o fundo do cenario se movimente mais lentamente
draw_sprite(backbuffer,frente,map_move,0); >> pinta a frente do cenario na posicao map_move

Movimentação de direita e esquerda:
if(direita){
dir = true;
if(posx >= posicao){
scrolling = true;
}else{
scrolling = false;
}
if(map_move == posicaoFinal){
scrolling = false;
}
if(scrolling == true){
map_move -=50;
}else{
posx+=50;
}
}

if(esquerda) {
dir = false;
if(posx <= posicao){
scrolling = true;
}else{
scrolling = false;
}
if(map_move == 0){
scrolling = false;
}
if(scrolling == true){
map_move +=50;
}else{
posx-=50;
}
}

terça-feira, 17 de maio de 2011

Uma pequena homenagem

Um pequeno video para nosso amigo Mateus relembrar um momento marcante de sua vida... :'(

Momento marcante

ps.:SHUAHSUAHUSAHUhsuhUSHuhsuHSUhushaUHSAUSHua...

Aula 4 - Matriz e Som

Colocando sons de passos no jogo:

-Declarando variaveis para controle do som:

SAMPLE* som_passos;
int seek_passos;
bool tocar_passos;

-Instalando o som:
install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);

-Carregando o arquivo de som e inicializando o seek com 0:
som_passos = load_sample("footsteps.wav");
seek_passos = 0;

-Executando e parando o som:
if(chao && frame != 0){
tocar_passos = false;
play_sample(som_passos, 255, seek_passos, 1000, false);
}else if(!tocar_passos){
tocar_passos = true;
stop_sample(som_passos);
}

Aula 3 - Exercicio animação

Fazendo o código para uma animação simples:

-Criando os os arrays para guardar as imagens da animação:

BITMAP* mario[5];
BITMAP* mario_pulo[3];

-Variavel para controlar os frames:
int frame, frame_pulo;

-Carregando as imagens para as animações:
mario[0] = load_bitmap("mario_4.BMP",NULL);
mario[1] = load_bitmap("mario_3.BMP",NULL);
mario[2] = load_bitmap("mario_4.BMP",NULL);
mario[3] = load_bitmap("mario_2.BMP",NULL);
mario[4] = load_bitmap("mario_1.BMP",NULL);
mario_pulo[0] = load_bitmap("pulo_1.BMP",NULL);
mario_pulo[1] = load_bitmap("pulo_2.BMP",NULL);
mario_pulo[2] = load_bitmap("pulo_3.BMP",NULL);

-Animações e movimentação do personagem de acordo com as ações do teclado:
if(direita){
posx+=5;
frame++;
}
if(esquerda){
posx-=5;
frame++;
}
if(key[KEY_SPACE] && (chao || qtdPulo < 2)){
chao = false;
impulso = 50;
qtdPulo++;
rest(100);
}

if(!chao){
posy -= impulso;
impulso -= 1;
if(posy > 430 || posy + gravidade > 430){
posy = 430;
impulso = 50;
chao = true;
qtdPulo = 0;
frame = 0;
frame_pulo = 0;
}
}

if(!chao){
posy += gravidade;
frame = 4;
if(impulso-gravidade > 0){
frame_pulo = 0;
}else if(impulso-gravidade <= 10 && impulso-gravidade >= -10){
frame_pulo = 1;
}else{
frame_pulo = 2;
}
//cout << "Impulso: " << impulso << " - " << "frame pulo: " << frame_pulo << "\n";
}

if(chao && frame == 4){
frame = 0;
}

-E por ultimo a renderização:
if(chao){

if(!flip){
draw_sprite(backbuffer,mario[frame],posx,posy);
}else{
draw_sprite_h_flip(backbuffer,mario[frame],posx,posy);
}
}else{
if(!flip){
draw_sprite(backbuffer,mario_pulo[frame_pulo],posx,posy);
}else{
draw_sprite_h_flip(backbuffer,mario_pulo[frame_pulo],posx,posy);
}
}

draw_sprite(screen,backbuffer,0,0);