Exemplo n.º 1
0
int main()
{
    srand(time(NULL));
    Stat stat;
    char name[50];
    Snake snake;
    Pos food;
    ToGiveTread toGiveThread = {RIGHT, false, false};
    showLeaderboard();
    initStat(&stat);
    strcpy(name, stat.nickname);
    HANDLE hReadThread = CreateThread(NULL, 0, ReadThread, &toGiveThread, 0, NULL);
    strcpy(stat.nickname, name);
    initField();
    initSnake(&snake);
    initFood(&snake, &food, &stat);
    updateAds(&stat);
    do{
        Sleep(sleepTime(stat.level));
    }while(!updateSnake(&snake, &food, &toGiveThread, &stat));
    toGiveThread.toStopThread = true;
    clearScr();
    updateScore(&stat);
    CloseHandle(hReadThread);
    showLeaderboard();
    return 0;
}
Exemplo n.º 2
0
void printZanahoria(){
	fijarColorTextoEstilo(COLOR_VERDE, ESTILO_CLARO);
	clearScr();
	printf("                                                         %sF iIiii%s      \n", COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("                  %s/\\/\\     / \\/\\                    %sI  Sv in%s    \n", COLOR_GRIS_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("                    %s\\ \\   / /                        %sxiili iii%s    \n", COLOR_GRIS_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("  %sBIENVENIDO!!       %s\\ \\_/ /              %siiii    %sisiiilIcivl%s \n", COLOR_MARRON_CLARO_S, COLOR_GRIS_CLARO_S, COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("      %sAL JUEGO       %s( o o )             %siiiiiiiiX%sLTDucMDUiiii%s  \n", COLOR_MARRON_CLARO_S, COLOR_GRIS_CLARO_S, COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("         %sDE LA   %s--ooO--uu-Ooo--      %sivOF        iig%sDQZLvii%s    \n", COLOR_MARRON_CLARO_S, COLOR_GRIS_CLARO_S, COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("       %sZANAHORIA                   %sivciiiiui       ioO%s  iiioL%s     \n", COLOR_MARRON_CLARO_S, COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("                                   %svISi      x   ii   bv%s              \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("                               %siiiiiixi           Di  Xi%s              \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("                             %siLi      i   i       lc  x             %sby%s    \n", COLOR_ROJO_CLARO_S, COLOR_PURPURA_CLARO_S, ESTILO_NORMAL_S);
	printf("                           %slLi     i      ic     iokii%s                      \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("         %scvii           iiLCz      iX     iH   iiii              %sJESUSGOKU%s\n", COLOR_ROJO_CLARO_S, COLOR_PURPURA_CLARO_S, ESTILO_NORMAL_S);
	printf("         %siiTkMci   iivii        c   zi   ivncii%s                             \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("              %siiiilsF    ii     Hi iSviiFUTii%s                               \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("              %sicsi  l     F   ilZiii vI icLzIUnTviiiiiiiiiii%s                \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("           %sivii          iBiiiii ii iOi    iilCvlCv Lnciiiiiki%s              \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("        %silii   iXi  iiiiivinli  iB     vc    Ci      iiiiv  ivi%s             \n", COLOR_ROJO_CLARO_S, ESTILO_NORMAL_S);
	printf("      %slsi   iiilHvi          iiiiGi    gI   MM   i     i    i o%siiilcxiiiiiix%s\n", COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("   %svFboiiiiiiii                    iiivGF   i   Zi    oL   iiLg%sgEMZOMFviiii%s\n", COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("   %sii                                   ivii   iM    iB    v QF%siiiilSgGlviiiii%s\n", COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("                                           %siiiiiMv   iT   i ski%siiiii  iLi iiii%s\n", COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf("                                                  %siiiii ikiii     %siiii iii%s\n", COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	printf(" presione enter para comenzar...                        %sii            %siiil%s\n", COLOR_ROJO_CLARO_S, COLOR_VERDE_CLARO_S, ESTILO_NORMAL_S);
	fijarColorNormal();
}
Exemplo n.º 3
0
int main(void){
    square **map;
    int pause = 0;
    int c;
    //initialize
    init_curses();
    map = allocate_map();

    //Glider 
    /*
    map[5][5].cur = LIVE;
    map[5][6].cur = LIVE;
    map[5][7].cur = LIVE;
    map[4][7].cur = LIVE;
    map[3][6].cur = LIVE;
    */

    //Ocilator
    /*
    map[5][5].cur = LIVE;
    map[6][5].cur = LIVE;
    map[7][5].cur = LIVE;
    */

    for(;;){
        if((c = kbhit()) != 0){
            switch(c){
                case 32:
                    if(pause == 0) pause = 1;
                    else if(pause == 1) pause = 0;
                    break;
                case 27:
                    destruct(map);
                    return 0;
                case 100:
                    pause = 1;
                    drawMode(map);
                    break;
                case 112:
                    writeFile(map);
                    break;
                case 114:
                    readFile(map);
                    pause = 1;
                    break;
                case 99:
                    clearScr(map);
                    draw(map, 0);
                    pause = 1;
                    break;
            }
        }
        if(pause == 0)
            gameoflife(map);
        usleep(SECOND/FPS);
    }
    destruct(map);
    return 0;
}
Exemplo n.º 4
0
void printGraciasPorJugar(){
	fijarColorTextoEstilo(COLOR_ROJO, ESTILO_CLARO);
	clearScr();
	printf("  __  ___  _   __  _   _   __   ___  _  ___     _  _ _  __   _   ___ ||\n");
	printf(" / _|| o \\/ \\ / _|| | / \\ / _| | o \\/ \\| o \\   | || | |/ _| / \\ | o \\L|\n");
	printf("( |_n|   / o ( (_ | || o |\\_ \\ |  _( o )   / n_| || U ( |_n| o ||   /  \n");
	printf(" \\__/|_|\\\\_n_|\\__||_||_n_||__/ |_|  \\_/|_|\\\\ \\__/ |___|\\__/|_n_||_|\\\\()\n");
	fijarColorNormal();
}
Exemplo n.º 5
0
void initStat(Stat * stat){
    clearScr();
    drawField(fieldX - 1, fieldY - 1, 40, 4, BACK_WHITE | BACKGROUND_INTENSITY);
    setTextColor(BACK_WHITE | BACKGROUND_INTENSITY);
    moveCursor(fieldX + 2, fieldY - 1);
    printf("Please, enter your nickname:");
    moveCursor(fieldX + 2, fieldY);
    scanf("%s", stat->nickname);

    stat->level = -1;
    do{
        drawField(fieldX - 1, fieldY - 1, 40, 4, BACK_WHITE | BACKGROUND_INTENSITY);
        setTextColor(BACK_WHITE | BACKGROUND_INTENSITY);
        moveCursor(fieldX + 2, fieldY - 1);
        printf("Please, enter level(from 1 to 9):");
        moveCursor(fieldX + 2, fieldY);
        scanf("%d", &stat->level);
    }while( stat->level > MAX_LEVEL || stat->level <= 0);
    clearScr();

    stat->score = 0;
    stat->blocksNum = INIT_BLOCKS_NUM;
}
Exemplo n.º 6
0
void printMatr(int length, int height, int matr[height][length], int isTurned, int toSwitch, short color){
    int i, j, initX, x, y;
    setTextColor(color);

    y = 2;
    if(!isTurned){
        if(toSwitch){
            clearScr();
            drawField(0, 0, COLS - 1, 2 + height*2);
        }
        initX = (COLS - length*6)/2;
        for(i = 0; i < height; i++){
            x = initX;
            for(j = 0; j < length; j++){
                moveCursor(x, y);
                printf("%5d", matr[i][j]);
                x += 6;
            }
            y +=2;
        }
    }else{
        if(toSwitch){
            clearScr();
            drawField(0, 0, COLS - 1, 2 + length*2);
        }
        initX = (COLS - height*6)/2;
        for(i = 0; i < length; i++){
            x = initX;
            for(j = 0; j < height; j++){
                moveCursor(x, y);
                printf("%5d", matr[j][i]);
                x += 6;
            }
            y +=2;
        }
    }
}
Exemplo n.º 7
0
void printJuegoDeLaZanahoriaLetras(){
    fijarColorTextoEstilo(COLOR_ROJO, ESTILO_CLARO);
	clearScr();
	printf(",---.o                          o    |              |    \n");
	printf("|---..,---.,---..    ,,---.,---..,---|,---.    ,---.|    \n");
	printf("|   |||---'|   | \\  / |---'|   |||   ||   |    ,---||    \n");
	printf("`---'``---'`   '  `'  `---'`   '``---'`---'    `---^`---'\n");
	printf("    |                            |         |         \n");
	printf("    |.   .,---.,---.,---.    ,---|,---.    |    ,---.\n");
	printf("    ||   ||---'|   ||   |    |   ||---'    |    ,---|\n");
	printf("`---'`---'`---'`---|`---'    `---'`---'    `---'`---^\n");
	printf("               `---'                                 \n");
	printf(",---,               |              o     \n");
	printf(" .-' ,---.,---.,---.|---.,---.,---..,---.\n");
	printf("|    ,---||   |,---||   ||   ||    |,---|\n");
	printf("`---'`---^`   '`---^`   '`---'`    ``---^\n");
	fijarColorTexto(COLOR_PURPURA);
	printf("\n  --:: Creado por JesusGoku ::--\n");
	fijarColorNormal();
	printf("\npresione enter para comenzar...");
}
Exemplo n.º 8
0
void printConejoGameOver(){
	fijarColorTextoEstilo(COLOR_PURPURA, ESTILO_CLARO);
	clearScr();
	printf("__**_**                       _______      ___      .___  ___.  _______ \n");
	printf("_**___**                     /  _____|    /   \\     |   \\/   | |   ____|\n");
	printf("_**___**_________****       |  |  __     /  ^  \\    |  \\  /  | |  |__   \n");
	printf("_**___**_______**___****    |  | |_ |   /  /_\\  \\   |  |\\/|  | |   __|  \n");
	printf("_**__**_______*___**___**   |  |__| |  /  _____  \\  |  |  |  | |  |____ \n");
	printf("__**__*______*__**__***__**  \\______| /__/     \\__\\ |__|  |__| |_______|\n");
	printf("___**__*____*__**_____**__* \n");
	printf("____**_**__**_**________**    ______   ____    ____  _______ .______       __ \n");
	printf("____**___**__**              /  __  \\  \\   \\  /   / |   ____||   _  \\     |  | \n");
	printf("___*___________*            |  |  |  |  \\   \\/   /  |  |__   |  |_)  |    |  | \n");
	printf("__*_____________*           |  |  |  |   \\      /   |   __|  |      /     |  | \n");
	printf("_*____0_____0____*          |  `--'  |    \\    /    |  |____ |  |\\  \\----.|__| \n");
	printf("_*_______@_______*           \\______/      \\__/     |_______|| _| `._____|(__) \n");
	printf("_*_______________* \n");
	printf("___*_____U_____* \n");
	printf("_____**_____**\n");
	fijarColorNormal();
}
Exemplo n.º 9
0
void vid_init()
{
	rhkbool color = detectColorSupport();
	if(color)
	{
		g_pVidTextMem = VID_COLOR_MEM; //Our video text memory adress
	}
	else
	{
		g_pVidTextMem = VID_MONO_MEM; //Our video text memory adress
	}
	g_Xmax = 80;
	g_Ymax = 25;
	setTextColor(BLACK, WHITE);
	clearScr();
	printf("RhKernel v%i.%i.%i (C) Sefer \"Rhoin\" Ergun",RHK_MAJOR_VER, RHK_MINOR_VER, RHK_REVISION_VER);
	printStatusMessage("Detecting video card color support...",color == TRUE ? STATUS_DONE : STATUS_FAILED);
	if(color)
	{
		//printf("Your video card supports color!",NULL);
	}
	printStatusMessage("Video is setting up...", STATUS_DONE);
}
Exemplo n.º 10
0
void FloppyManagerUpdateList(int dir) 
{
    int i;

    name_selected += dir;

    if (name_selected < 2)
	name_selected = 2;

    if (name_selected >= namecount)
	name_selected = namecount - 1;

    clearScr();
    drawString("Select floppy image:", 0, 0, 0xffff, 0);
    drawString("Cancel", 0, 29, 0xffff, 0);

    for (i = 2; i < namecount; i++) {
	if (i == name_selected)
	    drawString(namelist[i]->d_name, 0, i + 1, 0, 0xffff);
	else
	    drawString(namelist[i]->d_name, 0, i + 1, 0xffff, 0);
    }
}
Exemplo n.º 11
0
int main(int argc, char **argv)
{
	int m = 0, n = 0; // m para filas, n para columnas
	char ** tablero; // Tablero de juego
	char ** tableroCopia; // Tablero de Copia
	char ** auxiliar; // Apuntador Auxiliar
	int i = 0, j = 0, k = 0; // Variables auxiliares
	int conejosIniciales = 0; // Se almacenaran los conejos ingresados por el usuario
	int puntaje = 0, nivel = 0, conejosVivos = 0; // Estado del juego
	float trampolines = 0; // Se llevara la cantidad de trampolines
	int coordZF = 0, coordZC = 0;
	int siguienteMovimiento = 0;
	Bool gameOver = False;
	Bool movValido = False;
	FILE *fp = NULL;
	Bool recuperarPartida = False;
	ItemRanking ranking[RANKING_NUM];
	ItemRanking paso;
	TipoNodoNombre *lista_partidas;
	int lista_partidas_num;
	char partida_ruta[50];
	char partida_nombre[NODO_NOMBRE_MAX_LENGTH + 1];

	// Inicializo la lista
	lista_partidas = lista_vacia();

	// Cargo el Ranking
	inicializarRanking(ranking, RANKING_NUM);
	cargarRanking(ranking, RANKING_NUM);

	// Doy la bienvenida
	clearScr();
	printZanahoria();
	pausa();
	clearScr();

	// Instrucciones del Juego
	if(!preguntayn("Conoces las reglas del juego?")){
		mostrarAyuda();
	}

	// Lista de Partidas
	lista_partidas = generar_lista_partidas();

	if(lista_partidas != NULL){
		clearScr();
		recuperarPartida = False;
		recuperarPartida = (Bool)preguntayn("Existen partidas guardadas, quieres cargar una?");

		if(recuperarPartida)
		{
			lista_partidas_num = longitud_lista(lista_partidas);
			clearScr();
			printf("Se encontraron %i partida(s):\n\n", lista_partidas_num);
			mostrar_lista(lista_partidas);
			do{
				i = 0;
				printf("\nSelecciona una partida: ");
				clearStdin();
				scanf("%i", &i);
				if(i < 1 || i > lista_partidas_num) printMsjError("Partida no valida!");
			}while(i < 1 || i > lista_partidas_num);
			sprintf(partida_ruta, "%s%s%i%s", FOLDER_PARTIDAS, FILE_PARTIDA_PREFIX, i - 1, FILE_PARTIDA_EXT);
			tablero = cargarPartida(partida_ruta, &m, &n, &conejosIniciales, &conejosVivos, &nivel, &puntaje, &trampolines);
			if(tablero == NULL){
				printMsjError("Error: No se logro conseguir memoria para el tablero!");
				return 1;
			}
		}
	}

	// // Verifico si existe una partida guardada
	// fp = fopen(FILE_PARTIDA, "r");

	// // Existe una partida guardada
	// if(fp != NULL){
		
	// 	// Cierro el fichero para poder abrirlo desde la funcion
	// 	fclose(fp);
	// 	fp = NULL;
		
	// 	clearScr();
	// 	recuperarPartida = False;
	// 	recuperarPartida = (Bool)preguntayn("Existe una partida guardada, desea cargarla?");

	// 	// Si la respuesta fue afirmativa recupero el estado del juego
	// 	if(recuperarPartida)
	// 		tablero = cargarPartida(FILE_PARTIDA, &m, &n, &conejosIniciales, &conejosVivos, &nivel, &puntaje);

	// }

	if(!recuperarPartida){

		// Preguntamos el tamano del tablero
		clearScr();
		pedirDimensionTablero(&m, &n);

		// Preguntamos los conejos iniciales
		clearScr();
		pedirConejosIniciales(&m, &n, &conejosIniciales);
		conejosVivos = conejosIniciales;
		
		// Reservo memoria para el tablero
		tablero = (char **)pedirMemoriaMatriz(m, n, 'c');
		if(tablero == NULL)
		{
			printMsjError("Error: No se logro conseguir memoria para el tablero!");
			return 1;
		}
		tablero_ini(tablero, m , n);

		// Ubico la zanahoria
		ubicarZanahoriaInicial(tablero, m, n);

		// Ubico los conejos iniciales
		ubicarConejosIniciales(tablero, m, n, conejosVivos);


	}

	// Reservo la memoria para una copia del tablero
	tableroCopia = (char **)pedirMemoriaMatriz(m, n, 'c');
	if(tableroCopia == NULL){
		printMsjError("Error: No se logro conseguir memoria para el tablero!");
		return 1;
	}
	// Doy valores iniciales al tablero
	tablero_ini(tableroCopia, m, n);

	// Comienza el Ciclo de Juego
	for(;;){
		clearScr();
		// Muestro el tablero
		tablero_pretty_view(tablero, m , n);
		// Muestro el estado del juego
		//println("Conejos Vivos: %i - Nivel: %i - Puntaje: %i", conejosVivos, nivel + 1, puntaje);
		printf("%sConejos Vivos: %i%s", COLOR_ROJO_CLARO_S, conejosVivos, ESTILO_NORMAL_S);
		printf(" - %sNivel: %i%s", COLOR_VERDE_CLARO_S, nivel + 1, ESTILO_NORMAL_S);
		printf(" - %sPuntaje: %i%s\n", COLOR_MARRON_CLARO_S, puntaje, ESTILO_NORMAL_S);
		// Pido movimiento al usuario
		siguienteMovimiento = pedirSiguienteMovimiento();
		// Establesco el movimiento como no valido hasta que se demuestre lo contrario
		movValido = False;
		// Realizo el siguiente movimiento si es posible
		if(siguienteMovimiento >= 1 && siguienteMovimiento <= 9){
			// Verificamos si el movimiento ingresado se puede realizar
			// Si es asi movemos la zanahoria
			movValido = ejecutarMovimientoZanahoria(siguienteMovimiento, tablero, m, n, nivel) ? True : False;
			if(!movValido){
				printMsjErrorPausa("Movimiento no valido!");
			}else{
				gameOver = (ejecutarMovimientoConejos(tablero, tableroCopia, m, n, &conejosVivos, &puntaje) == 0) ? True : False;
			}
		}else if(siguienteMovimiento == MOVE_TRANSPORT){
			// Ejecutamos la teletransportacion y movemos a los conejos
			movValido = True;
			ejecutarTeletransportacion(tablero, m , n);
			gameOver = (ejecutarMovimientoConejos(tablero, tableroCopia, m, n, &conejosVivos, &puntaje) == 0) ? True : False;
		}else if(siguienteMovimiento == ACTION_SAVE){
			lista_partidas_num = longitud_lista(lista_partidas);
			clearScr();
			if(lista_partidas_num) printf("Puedes guardar unar partida nueva o sobreescribir una existente.\n\n");
			if(lista_partidas_num && preguntayn("Deseas sobreescribir una partida?")){
				clearScr();
				printf("Hay %i Partida(s) Disponibles:\n\n", lista_partidas_num);
				mostrar_lista(lista_partidas);
				do{
					i = 0;
					printf("\nIngresa el numero de la que deseas sobreescribir: ");
					clearStdin();
					scanf("%i", &i);
					if(i < 1 || i > lista_partidas_num) printMsjError("Partida no valida!");
				}while(i < 1 || i > lista_partidas_num);
				// Sobreescribir una partida
				sprintf(partida_ruta, "%s%s%i%s", FOLDER_PARTIDAS, FILE_PARTIDA_PREFIX, i - 1, FILE_PARTIDA_EXT);
				pedirCadena("\nBreve descripcion partida", partida_nombre, NODO_NOMBRE_MAX_LENGTH);
				if(guardarPartida(partida_ruta, tablero, m, n, partida_nombre, conejosIniciales, conejosVivos, nivel, puntaje, trampolines)){
					modificar_valor_posicion(lista_partidas, i - 1, partida_nombre);
					printMsjOkPausa("Partida Guardada!");
				}
			}else{
				// Guardar Partida Nueva
				sprintf(partida_ruta, "%s%s%i%s", FOLDER_PARTIDAS, FILE_PARTIDA_PREFIX, lista_partidas_num, FILE_PARTIDA_EXT);
				clearScr();
				pedirCadena("Breve descripcion partida", partida_nombre, NODO_NOMBRE_MAX_LENGTH);
				if(guardarPartida(partida_ruta, tablero, m, n, partida_nombre, conejosIniciales, conejosVivos, nivel, puntaje, trampolines)){
					lista_partidas = insertar_por_cola(lista_partidas, partida_nombre);
					printMsjOkPausa("Partida Guardada!");
				}
			}
			// // Verficamos si ya existe una partida guardada
			// fp = fopen(FILE_PARTIDA, "r");
			// if(fp != NULL){
			// 	fclose(fp);
			// 	fp = NULL;
			// 	// Preguntamos si desea sobreescribir la partida existe
			// 	if(preguntayn("Ya existe una partida guardada, desea sobreescribirla?")){
			// 		if(guardarPartida(FILE_PARTIDA, tablero, m, n, conejosIniciales, conejosVivos, nivel, puntaje))
			// 			printMsjOkPausa("Partida Guardada!");
			// 	}
			// }else{
			// 	if(guardarPartida(FILE_PARTIDA, tablero, m, n, conejosIniciales, conejosVivos, nivel, puntaje))
			// 		printMsjOkPausa("Partida Guardada!");
			// }
		}else if(siguienteMovimiento == ACTION_QUIT){
			clearScr();
			//println("Gracias por jugar!");
			printGraciasPorJugar();
			break;
		}

		if(movValido){
			puntaje += PUNTAJE_MOV;
			// Intercambio los tableros
			auxiliar = tablero;
			tablero = tableroCopia;
			tableroCopia = auxiliar;

			// Paso de Nivel
			if(conejosVivos == 0){
				// Inicializo el Tablero
				posicionZanahoria(tablero, m, n, &coordZF, &coordZC);
				tablero_ini(tablero, m , n);
				tablero[coordZF][coordZC] = ZANAHORIA;
				// Aumento el nivel en una unidad
				nivel++;
				// Aumento el puntaje
				puntaje += PUNTAJE_NIVEL;
				// Incremento los conejos
				conejosVivos = conejosIniciales + (redondeoEntero(conejosIniciales * TASA_AUMENTO_CONEJOS) * nivel);
				ubicarConejosIniciales(tablero, m , n, conejosVivos);
				// Ubico los Trampolines
				if(nivel >= NIVEL_TRAMPOLINES_START){
					trampolines += nivel == NIVEL_TRAMPOLINES_START ? TRAMPOLINES_INICIALES : trampolines * TASA_AUMENTO_TRAMPOLINES;
					ubicarTrampolines(tablero, m, n, (int)trampolines);
				}
			}
		}

		// Acciones en caso de Perder el Juego
		if(gameOver){
			clearScr();
			// tablero_view(tablero, m, n);
			printConejoGameOver();
			// Verificamos si puede entrar al ranking
			if(puntaje > ranking[0].puntaje){
				paso.puntaje = puntaje;
				pedirCadena("\nFelicidades has ingresado al ranking!!\n\nDate tu nombre", paso.nombre, MAX_SIZE_NAME);
				i = ingresarRanking(ranking, RANKING_NUM, &paso);
				clearScr();
				mostrarRankingDestacado(ranking, RANKING_NUM, i);
			}
			break;
		}
	} // for - ciclo de juego

	// Libero la memoria otorgada para el tablero
	liberarMemoriaMatriz((void **)tablero);
	liberarMemoriaMatriz((void **)tableroCopia);
	tablero = tableroCopia = NULL;

	// Guarda el Ranking en el disco
	guardarRanking(ranking, RANKING_NUM);

	return 0;
}
Exemplo n.º 12
0
int main(void)
{
    int length = 0, height = 0, i, k, lowVal = -1000, highVal = -1000;
    char entred[100] = "";

    do{
        drawField(COLS/4, ROWS/4, COLS/2, ROWS/2);
        k = setText(COLS/4 + 2, 3*ROWS/8, "Enter matrix length [1..9]\n& height [1..9]\nparting values with coma:", FIELD_COLOR);
        getText(COLS/4 + 2, 3*ROWS/8 + k + 1, entred, FIELD_BACKGROUND, FORE_BLACK);
        getPartiedInts(entred, &length, &height);
        if((length > 9 || length < 1) || (height > 9 || height< 1)){
            setTextLine(COLS/4 + 2, 3*ROWS/8 + k + 4, "Invalid input!", FIELD_BACKGROUND | FOREGROUND_RED);
            Sleep(1500);
        }
    }while((length > 9 || length < 1) || (height > 9 || height< 1));

    do{
        drawField(COLS/4, ROWS/4, COLS/2, ROWS/2);
        k = setText(COLS/4 + 2, 3*ROWS/8, "Enter matrix random values diapason\nparting left & right bounds with coma:", FIELD_COLOR);
        getText(COLS/4 + 2, 3*ROWS/8 + k + 1, entred, FIELD_BACKGROUND, FORE_BLACK);
        getPartiedInts(entred, &lowVal, &highVal);
        if((lowVal > highVal) || (highVal > 999) || (lowVal < -999)){
            setTextLine(COLS/4 + 2, 3*ROWS/8 + k + 4, "Invalid input!", FIELD_BACKGROUND | FOREGROUND_RED);
            Sleep(1500);
        }
    }while((lowVal > highVal) || (highVal > 999) || (lowVal < -999));


    int matr[height][length], mcpy[length][height], isTurned = 0, toSwitch = 0, firstToSwap, secondToSwap;
    int cX, cY, val, row;
    fillRand(length, height, matr, lowVal, highVal);

    int y = 2 + height*2;

    short color = FIELD_COLOR, toClean = 0, isSwaped = 0, help = 0, toPickOutCols = 0, toYellow = 0, toPickOutRow = 0;
    char * g, cpy[100];
    COORD swaped[2];
    clearScr();
    drawField(0, 0, COLS - 1, y);

    while(1){
        y = isTurned ? (2 + length*2) : (2 + height*2);
        if(toClean){
            toClean = 0;
            clean(y);
        }
        printMatr(length, height, matr, isTurned, toSwitch, color);
        color = FIELD_COLOR;

        if(isSwaped){
            pickOut(length, height, matr, isTurned, swaped[0], BACKGROUND_GREEN);
            pickOut(length, height, matr, isTurned, swaped[1], BACKGROUND_RED);
            isSwaped = 0;
        } else if(toYellow){
            printEl(length, height, matr, isTurned, cX - 1, cY - 1, FORE_YELLOW | FIELD_BACKGROUND | FOREGROUND_INTENSITY);
            toYellow = 0;
        } else if(toPickOutRow){
            pickOutRow(length, height, matr, isTurned, row - 1, BACKGROUND_GREEN);
            toPickOutRow = 0;
        } else if(toPickOutCols){
            pickOutCol(length, height, matr, isTurned, firstToSwap - 1, BACKGROUND_GREEN);
            pickOutCol(length, height, matr, isTurned, secondToSwap - 1, BACKGROUND_RED);
            toPickOutCols = 0;
        }

        toSwitch = 0;
        setTextLine(1, y + 2, "Enter your command:",  FORE_WHITE);
        do{
            getText(1, y + 3, entred, BACK_BLACK, FOREGROUND_GREEN);
        }while(entred[0] == '\0');

        strcpy(cpy, entred);
        g = strtok(cpy, " ");
        if(!g)
            g = "\n";
        for(i = 2; i < COLS; i++){
            moveCursor(i, y + 3);
            putchar(' ');
        }
        if(!strcmp(entred, "help")){
            helpComm(y + 5);
            help = 1;
        }else if(!strcmp(entred, "clear all")){
            clearMatr(length, height, matr);
            color = FIELD_BACKGROUND | FORE_YELLOW | FOREGROUND_INTENSITY;
        }else if(!strcmp(g, "random")){
            lowVal = -1000;
            highVal = -1000;
            char cpy1[100];
            for(i = 0; cpy[i + 7] != '\0'; i++){
                cpy1[i] = cpy[i + 7];
            }
            cpy1[i] = '\0';
            getPartiedInts(cpy1, &lowVal, &highVal);

            if((lowVal > highVal) || (highVal > 999) || (lowVal < -999)){
                invalidInput(y);
            }else{
                fillRand(length, height, matr, lowVal, highVal);
                color = FIELD_BACKGROUND | FORE_YELLOW | FOREGROUND_INTENSITY;
            }
        }else if(!strcmp(g, "set")){
            cX = -1;
            cY = -1;
            val = -1000;
            char cpy1[100], *l;
            for(i = 0; cpy[i + 4] != '\0'; i++){
                cpy1[i] = cpy[i + 4];
            }
            cpy1[i] = '\0';
            getPartiedInts(cpy1, &cX, &cY);
            l = strtok(cpy1, ":");
            l = strtok(NULL, ":");
            if(l != NULL){
                val = atoi(l);
            }

            if(!isTurned){
                if(cX > length || cX <= 0 || cY > height || cY <= 0 || val > 999 || val < -999){
                    invalidInput(y);
                }else{
                    matr[cY -  1][cX - 1] = val;
                    toYellow = 1;
                }
            }else{
                if(cX > height || cX <= 0 || cY > length || cY <= 0 || val > 999 || val < -999){
                    invalidInput(y);
                }else{
                    matr[cX - 1][cY - 1] = val;
                    toYellow = 1;
                }
            }
        }else if(!strcmp(entred, "print upright")){
            isTurned = !isTurned;
            toSwitch = 1;
        }else if(!strcmp(entred, "middle value")){
            double mid = countMiddle(length, height, matr);
            setTextColor(FORE_WHITE);
            moveCursor(5, y + 4);
            printf("middle value: ");
            setTextColor(FORE_YELLOW);
            moveCursor(22, y + 4);
            printf("%f                         ", mid);
            help = 1;
        }else if(!strcmp(g, "sum")){
            int sum;
            row = -1;
            g = strtok(NULL, " ");
            if(g != NULL && !strcmp(g, "in")){
                g = strtok(NULL, " ");
                if(g != NULL && !strcmp(g, "row")){
                    g = strtok(NULL, " ");
                    if(g != NULL)
                        row = atoi(g);
                }
            }
            if(row < 0 || row > (isTurned ? length : height))
                invalidInput(y);
            else{
                sum = sumInRow(length, height, matr, isTurned, row -1);
                toPickOutRow = 1;
                setTextColor(FORE_WHITE);
                moveCursor(5, y + 4);
                printf("sum in %dth row: ", row);
                setTextColor(FORE_YELLOW);
                moveCursor(22, y + 4);
                printf("%d                         ", sum);
                help = 1;
            }
        }else if(!strcmp(entred, "swap 1")){
            swapMinMax(length, height, matr, isTurned, 1, swaped);
            isSwaped = 1;
        }else if(!strcmp(entred, "swap 2")){
            swapMinMax(length, height, matr, isTurned, 0, swaped);
            isSwaped = 1;
        }else if(!strcmp(entred, "swap cols")){
            swapCols(length, height, matr, isTurned, &firstToSwap, &secondToSwap);
            toPickOutCols = 1;
        }else if(!strcmp(entred, "clean workspace") && help){
            toClean = 1;
            help = 0;
        }else if(!strcmp(entred, "f**k you")){
            clearScr();
            setTextLine(0, 0, "GO F**K YOURSELF!", FOREGROUND_RED | FOREGROUND_INTENSITY);
            setTextColor(FORE_WHITE);
            return EXIT_FAILURE;
        }else if(!strcmp(entred, "exit")){
            clearScr();
            setTextColor(FORE_WHITE);
            return EXIT_SUCCESS;
        }else{
            invalidInput(y);
        }
    }
    return EXIT_SUCCESS;
}
Exemplo n.º 13
0
void
testLcd(void)
{
  initLCD();
  lcdBacklight(FALSE);
  osSleep(10);
  unsigned char awaitLoop = 1;
  for(;;)
  {
 	clearScr();

// 	if(displayMode == 1)
// 	{
// 		//writeLCD(1, numberToChar(currentSongInfo.time));
// 		unsigned char toWrite[6];
// 		timeToString(currentSongInfo.time, toWrite);
// 		WriteString(toWrite);
// 		osSleep(10);
// 		continue;
// 	}

 	if(volumeUp != 0 || volumeDown != 0)
 	{
 		writeLCD(1, numberToChar(currentVolume));
 		if(volumeUp != 0) volumeUp = 0;
 		if(volumeDown != 0) volumeDown = 0;
 		awaitLoop = 0;
 	}
 	else if(isError == 0)
	{
		WriteString(currentSongInfo.name);

		//move curstor to second row
		writeLCD(0, 0x80 | 0x40);
		delay37us();

		WriteString(currentSongInfo.author);
	}
	else
	{
		WriteString(error);
	}

    osSleep(50);
    osSleep(1); //actually only 1.52 mS needed

    // awaiting command from joystick
    if(awaitLoop != 0)
    {
    	for(;;)
    	    {
    	    	if(changeLeft != 0)
    	    	{
    	    		changeLeft = 0;
    	    		break;
    	    	}
    	    	if(changeRight != 0)
    	    	{
    	    	    changeRight = 0;
    	    	    break;
    	    	}
    	    	if(volumeUp != 0)
    	    	{
    	    		break;
    	    	}
    	    	if(volumeDown != 0)
    	    	{
    	    		break;
    	    	}
    	    	if(isError != 0)
    	    	{
    	    		break;
    	    	}
    	    	if(currentDisplayMode != displayMode)
    	    	{
    	    		currentDisplayMode = displayMode;
    	    		break;
    	    	}

    	    	osSleep(100);
    	    	if(currentSongInfo.nameLength > 16 || currentSongInfo.authorLength > 16)
    	    	{
    	    		ScreenShiftLeft();
    	    	}
    	    }
    }
    if(awaitLoop == 0) awaitLoop = 1;
  }
	//lcdBacklight(FALSE);
}
Exemplo n.º 14
0
int main(){
	int i = 0;
	clearScr();
	writeScr("Initializing OS", 0, 0);
	writeScr("Setting up OS descriptors...", 1, 0);

	constructGDT();
	lgdtT.offset = (uint32_t) &gdt;
	lgdtT.limit = (sizeof(struct gdt_entry)*5) - 1;
	loadGDT(&lgdtT);

	constructIDT();
	lidtT.offset = (uint32_t) &idt;
	lidtT.limit = (sizeof(struct idt_entry)*256) - 1;
	loadIDT(&lidtT);
	
	asm("cli");
	setupPIC();

	uint8_t cs = 8;
	uint8_t ds = 16; 
	uint8_t ss = 24;
	uint8_t fs = ds; 
	uint8_t es = 32;

	loadSegments(cs,ds,ss,fs,es);
	
	writeScrPM("done.", 2, 28);
	clearScrPM();
	head = null;
	tail = null;

  	writeScrPM("Running ten processes...", 0, 0);
	writeScrPM("-          -", 20, 0);
	mutex_init(&m);

	// Process 1
	createProcess(ds,  ss, stack[0] + STACK_SIZE, cs, (uint32_t) p1);
	
	// Process 2
	createProcess(ds,  ss, stack[1] + STACK_SIZE, cs, (uint32_t) p2);
	
	// Process 3
	createProcess(ds,  ss, stack[2] + STACK_SIZE, cs, (uint32_t) p3);
	
	// Process 4
	createProcess(ds,  ss, stack[3] + STACK_SIZE, cs, (uint32_t) p4);
	
	// Process 5
	createProcess(ds,  ss, stack[4] + STACK_SIZE, cs, (uint32_t) p5);
	
	// Process 6
	createProcess(ds,  ss, stack[5] + STACK_SIZE, cs, (uint32_t) p6);
	
	// Process 7
	createProcess(ds,  ss, stack[6] + STACK_SIZE, cs, (uint32_t) p7);
	// Process 8
	createProcess(ds,  ss, stack[7] + STACK_SIZE, cs, (uint32_t) p8);
	// Process 9
	createProcess(ds,  ss, stack[8] + STACK_SIZE, cs, (uint32_t) p9);
	// Process 10
	createProcess(ds,  ss, stack[9] + STACK_SIZE, cs, (uint32_t) p10);
	//*/
	start();
}