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; }
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(); }
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; }
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(); }
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; }
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; } } }
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..."); }
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(); }
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); }
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); } }
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; }
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; }
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); }
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(); }