Você está na página 1de 8

COLEGIO DE EDUCACION PROFESIONAL TECNICA DEL

ESTADODEVERACRUZ
LIC. JESUS REYES HEROLES

ALUMNA: Emma Graciela Santos Blanco
COMPAERO DE EQUIPO: ngel Martnez Hernndez

GRUPO: 604
Practica: 12

MATRICULA: 111650076-8
CARERRA: P.T.B. en Informtica
MODULO:
Programacin de videojuegos

DOCENTE: Miguel ngel Ramos Grande

PROPSITO: Crear un programa para el juego
SimeonDice, juego clsico de memoria auditiva donde se
hacen reproducciones de sonido.



Practica 12
INTRODUCCION:
Hablaremos de como realizamos la prctica nmero 12 de programacin para
videojuegos, que se llama Simon Dice, donde se utiliza reproducciones de sonido.
DESARROLLO:
1.- Aqu mostramos cuales fueron los pasos que realizamos para realizar la prctica: Lo
primero que hicimos fue Abrir Dev-Cpp>Clic en Archivo>Seleccionamos el men
Nuevo> Proyecto

Nos mandara la siguiente ventana, donde seleccionamos el men Multimedia>Allegro
Application (Static), damos nombre a nuestro proyecto:


Ahora debemos de ir introduciendo los cdigos correspondientes para la prctica, es
decir, todas las libreras de sonido, funciones, etc.:
Este es el cdigo que utilizamos:
#include <stdlib.h> // Para "rand"
#include <ctype.h> // Para "tolower"
#include <allegro.h>


/* -------------- Constantes globales ------------- */
#define ANCHOPANTALLA 320
#define ALTOPANTALLA 200
#define MAXNOTAS 300
#define RETARDONOTA 200
#define RETARDOETAPA 1000

#define TECLA1 'w'
#define TECLA2 'e'
#define TECLA3 's'
#define TECLA4 'd'

#define FICHEROSONIDO1 "simon1.mid"
#define FICHEROSONIDO2 "simon2.mid"
#define FICHEROSONIDO3 "simon3.mid"
#define FICHEROSONIDO4 "simon4.mid"

/* -------------- Variables globales -------------- */
int
notaActual = 0, // Nmero de nota actual
notas[MAXNOTAS], // Secuencia de notas
acertado; // Si se ha acertado o no

MIDI *sonido1, *sonido2, *sonido3, *sonido4;

/* -------------- Rutina de inicializacin -------- */
int inicializa()
{
allegro_init(); // Inicializamos Allegro
install_keyboard();
install_timer();

// Intentamos entrar a modo grafico
if (set_gfx_mode(GFX_SAFE, ANCHOPANTALLA, ALTOPANTALLA, 0, 0) != 0)
{
set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
allegro_message(
"Incapaz de entrar a modo grafico\n%s\n",
allegro_error);
return 1;
}

// e intentamos usar midi
if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, "") != 0) {
allegro_message("Error inicializando el sistema de sonido\n%s\n",
allegro_error);
return 2;
}

sonido1 = load_midi(FICHEROSONIDO1);
if (!sonido1) {
allegro_message("Error leyendo el fichero MID '%s'\n",
FICHEROSONIDO1);
return 3;
}

sonido2 = load_midi(FICHEROSONIDO2);
if (!sonido2) {
allegro_message("Error leyendo el fichero MID '%s'\n",
FICHEROSONIDO2);
return 3;
}

sonido3 = load_midi(FICHEROSONIDO3);
if (!sonido3) {
allegro_message("Error leyendo el fichero MID '%s'\n",
FICHEROSONIDO3);
return 3;
}

sonido4 = load_midi(FICHEROSONIDO4);
if (!sonido4) {
allegro_message("Error leyendo el fichero MID '%s'\n",
FICHEROSONIDO4);
return 3;
}

// Preparo nmeros aleatorios
srand(time(0));

// Volumen al mximo, por si acaso
set_volume(255,255);

// Y termino indicando que no ha habido errores
return 0;
}



/* -------------- Rutina de dibujar pantalla ------ */
void dibujaPantalla()
{

// Borro pantalla
clear_bitmap(screen);

// Primer sector: SupIzq -> verde
rectfill(screen, 10,10,
ANCHOPANTALLA/2-10,ALTOPANTALLA/2-30,
makecol(0, 150, 0));
textprintf(screen, font, ANCHOPANTALLA/4, ALTOPANTALLA/2-28,
makecol(0, 150, 0), "%c",
TECLA1);

// Segundo sector: SupDcha -> rojo
rectfill(screen, ANCHOPANTALLA/2+10,10,
ANCHOPANTALLA-10,ALTOPANTALLA/2-30,
makecol(150, 0, 0));
textprintf(screen, font, ANCHOPANTALLA/4*3, ALTOPANTALLA/2-28,
makecol(150, 0, 0), "%c",
TECLA2);

// Tercer sector: InfIzq -> amarillo
rectfill(screen, 10,ALTOPANTALLA/2-10,
ANCHOPANTALLA/2-10,ALTOPANTALLA-50,
makecol(200, 200, 0));
textprintf(screen, font, ANCHOPANTALLA/4, ALTOPANTALLA-48,
makecol(200, 200, 0), "%c",
TECLA3);

// Cuarto sector: InfDcha -> azul
rectfill(screen, ANCHOPANTALLA/2+10,ALTOPANTALLA/2-10,
ANCHOPANTALLA-10,ALTOPANTALLA-50,
makecol(0, 0, 150));
textprintf(screen, font, ANCHOPANTALLA/4*3, ALTOPANTALLA-48,
makecol(0, 0, 150), "%c",
TECLA4);


textprintf(screen, font, 4,ALTOPANTALLA-20, palette_color[13],
"Puntos: %d", notaActual*10); // Puntuacin
}


/* -------------- Rutina de reproducir notas ------ */
void reproduceNotas()
{
int i;

for (i=0; i<=notaActual; i++) {

if (notas[i] == 0) {
play_midi(sonido1, FALSE);
rectfill(screen, 10,10,
ANCHOPANTALLA/2-10,ALTOPANTALLA/2-30,
makecol(255, 255, 255));
}

if (notas[i] == 1) {
play_midi(sonido2, FALSE);
rectfill(screen, ANCHOPANTALLA/2+10,10,
ANCHOPANTALLA-10,ALTOPANTALLA/2-30,
makecol(255, 255, 255));
}

if (notas[i] == 2) {
play_midi(sonido3, FALSE);
rectfill(screen, 10,ALTOPANTALLA/2-10,
ANCHOPANTALLA/2-10,ALTOPANTALLA-50,
makecol(255, 255, 255));
}

if (notas[i] == 3) {
play_midi(sonido4, FALSE);
rectfill(screen, ANCHOPANTALLA/2+10,ALTOPANTALLA/2-10,
ANCHOPANTALLA-10,ALTOPANTALLA-50,
makecol(255, 255, 255));
}
rest(RETARDONOTA);
dibujaPantalla();
}
}


/* -------------- Rutina de comparar notas ------ */
int comparaNota(char tecla, int notaActual)
{
int i;

// Presupongo que no ha acertado y comparare 1 x 1
int seHaAcertado = 0;

if ( (tecla == TECLA1) && (notas[notaActual] == 0) ){
play_midi(sonido1, FALSE);
rectfill(screen, 10,10,
ANCHOPANTALLA/2-10,ALTOPANTALLA/2-30,
makecol(255, 255, 255));
seHaAcertado = 1;
}

if ( (tecla == TECLA2) && (notas[notaActual] == 1) ){
play_midi(sonido2, FALSE);
rectfill(screen, ANCHOPANTALLA/2+10,10,
ANCHOPANTALLA-10,ALTOPANTALLA/2-30,
makecol(150, 0, 0));
seHaAcertado = 1;
}

if ( (tecla == TECLA3) && (notas[notaActual] == 2) ){
play_midi(sonido3, FALSE);
rectfill(screen, 10,ALTOPANTALLA/2-10,
ANCHOPANTALLA/2-10,ALTOPANTALLA-50,
makecol(200, 200, 0));
seHaAcertado = 1;
}

if ( (tecla == TECLA4) && (notas[notaActual] == 3) ){
play_midi(sonido4, FALSE);
rectfill(screen, ANCHOPANTALLA/2+10,ALTOPANTALLA/2-10,
ANCHOPANTALLA-10,ALTOPANTALLA-50,
makecol(255, 255, 255));
seHaAcertado = 1;
}

return seHaAcertado;
}



/* ------------------------------------------------ */
/* */
/* -------------- Cuerpo del programa ------------- */

int main()
{

int i;
char tecla;

// Intento inicializar
if (inicializa() != 0)
exit(1);

dibujaPantalla();
textprintf(screen, font, ANCHOPANTALLA/4, ALTOPANTALLA/2 - 40,
makecol(255, 255, 255), " S I M E O N D I C E ");
textprintf(screen, font, ANCHOPANTALLA/4, ALTOPANTALLA/2,
makecol(255, 255, 255), "Pulsa una tecla para jugar");
readkey();

do { // Parte que se repite hasta que falle

dibujaPantalla(); // Dibujo la pantalla de juego

// Genero nueva nota y reproduzco todas
notas[notaActual] = rand() % 4;
reproduceNotas();

acertado = 1; // Presupongo que acertar

// Ahora el jugador intenta repetir
i = 0;
do {
tecla = tolower(readkey()); // Leo la tecla
if (tecla == 27) break; // Salgo si es ESC
acertado = comparaNota(tecla, i); // Comparo
i ++; // Y paso a la siguiente
} while ((i<=notaActual) && (acertado == 1));

// Una nota ms
if (acertado == 1) {
textprintf(screen, font,
ANCHOPANTALLA/4, ALTOPANTALLA/2,
makecol(255, 255, 255), "Correcto!");
notaActual ++;
}
else {
textprintf(screen, font,
ANCHOPANTALLA/4, ALTOPANTALLA/2,
makecol(255, 255, 255), "Fallaste!");
}

rest (RETARDOETAPA);

} while ((acertado == 1) && (notaActual < MAXNOTAS));


textprintf(screen, font,
ANCHOPANTALLA/4, ALTOPANTALLA/2 + 20, palette_color[15],
"Partida terminada");
readkey();
return 0;

}

/* Termino con la "macro" que me pide Allegro */
END_OF_MAIN();

Ejecutamos el programa con F9 nos mandara una ventana donde cargara el programa

Se ejecutara de la siguiente manera, donde nos mandara los sonidos que elegimos en
el programa, adems mandara la pantalla con colores llamativos.



CONCLUSIN:
Finalizamos la prctica guindonos del cdigo de la gua pedaggica, la realice en
equipo con mi compaero ngel Martnez, la terminamos exitosamente mostrndonos
los sonidos que peda, y el nombre del juego es Simon Dice cada quien realizo su
reporte.

Você também pode gostar