Commit 28849a83 authored by Bruno Freitas Tissei's avatar Bruno Freitas Tissei

Comentarios terminados

parent 02619c93
This diff is collapsed.
/* ==========================================================
* Projeto destinado a disciplina de Oficina de Computacao
*
* Autores: Bruno Freitas Tissei e Ivo de Souza Bueno Junior
* Disciplina: Oficina de Computacao
* Entrega: 17/12/2015
* ========================================================== */
#ifndef _MAPS_H
#define _MAPS_H
......
......@@ -7,23 +7,34 @@
* ========================================================== */
#include "menu.h"
// cores do menu
int menuColors[3][3];
// variavel auxiliar para a leitura do sprite menu
char input[WIDTH];
// deslocamento da matriz para imprimir o menu no centro da tela
int offmenuy, offmenux;
// linhas e colunas da matriz menu
int row, col;
char mps[7] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
// nomes dos mapas
char maps[7] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
// mapa atualmente selecionado
int currmap = 0;
// variavel que armazena o mapa a ser selecionado
int buffer;
// le o sprite do mapa e armazena na memoria
// *menu = o menu
void readFileMenu(menu *menu) {
int i, j;
menu->sprite = fopen("./sprites/menu.txt", "r");
buffer = -1;
// le as cores do sprite do menu
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
fscanf(menu->sprite, "%d", &menuColors[i][j]);
// le o sprite do sprite do menu
for (i = 0; i < HEIGHT; i++) {
fscanf(menu->sprite, "%s", input);
for (j = 0; j < WIDTH; j++)
......@@ -33,26 +44,34 @@ void readFileMenu(menu *menu) {
setMenuColors();
}
// carrega as cores do menu a partir do sprite correspondente
void setMenuColors() {
// inicia as cores do menu a partir da matriz de cores
init_color(COLOR_WHITE, menuColors[0][0], menuColors[0][1], menuColors[0][2]);
init_color(COLOR_BLACK, menuColors[1][0], menuColors[1][1], menuColors[1][2]);
init_color(COLOR_BLUE, menuColors[2][0], menuColors[2][1], menuColors[2][2]);
// background
// fundo
init_pair(1, COLOR_BLACK, COLOR_BLACK);
// objects
// letras e simbolos
init_pair(2, COLOR_WHITE, COLOR_BLACK);
// background_smallbox
// fundo do texto "Boulder Dash"
init_pair(3, COLOR_BLUE, COLOR_BLUE);
// all white
// texto "Boulder Dash"
init_pair(4, COLOR_WHITE, COLOR_WHITE);
}
// atualiza o menu
// *menu = o menu
// action = entrada do teclado
// *loadMenu = carrega menu?
int updateMenu(menu *menu, int action, int *loadMenu) {
buffer = -1;
// carrega o menu
if (*loadMenu) {
menu->highscore = fopen("./data/highscore.txt", "r");
fscanf(menu->highscore, "%d", &menu->high);
......@@ -62,43 +81,49 @@ int updateMenu(menu *menu, int action, int *loadMenu) {
setMenuColors();
*loadMenu = false;
}
switch(action){
// avalia a entrada do teclado
switch(action) {
// direita
case 6:
currmap = (currmap + 1) % 7;
break;
// esquerda
case 4:
currmap = currmap == 0 ? 6 : currmap - 1;
break;
// enter
case 1:
buffer = currmap;
break;
default:
break;
}
// retorna o valor do buffer para carregar o mapa selecionado
return buffer;
}
// desenha o menu na tela
// *menu = o menu
void renderMenu(menu *menu){
int i, j;
int i, j, magnitude;
// calcula meio da tela caso o jogador mude o tamanho da janela durante o jogo
getmaxyx(stdscr, row, col);
offmenuy = (row / 2) - (12 * 3);
offmenux = (col / 2) - (20 * 6);
menu->grid[21][22] = mps[currmap];
menu->grid[21][20] = ((menu->high / 100000) % 10) + '0';
menu->grid[22][20] = ((menu->high / 10000) % 10) + '0';
menu->grid[23][20] = ((menu->high / 1000) % 10) + '0';
menu->grid[24][20] = ((menu->high / 100) % 10) + '0';
menu->grid[25][20] = ((menu->high / 10) % 10) + '0';
menu->grid[26][20] = (menu->high % 10) + '0';
menu->grid[21][21] = ((menu->last / 100000) % 10) + '0';
menu->grid[22][21] = ((menu->last / 10000) % 10) + '0';
menu->grid[23][21] = ((menu->last / 1000) % 10) + '0';
menu->grid[24][21] = ((menu->last / 100) % 10) + '0';
menu->grid[25][21] = ((menu->last / 10) % 10) + '0';
menu->grid[26][21] = (menu->last % 10) + '0';
// desenha o mapa selecionado
menu->grid[21][22] = maps[currmap];
// desenha a maior pontuacao
for (i = 21, magnitude = 100000; i <= 26; i++, magnitude /= 10)
menu->grid[i][20] = ((menu->high / magnitude) % 10) + '0';
// desenha a ultima pontuacao
for (i = 21, magnitude = 100000; i <= 26; i++, magnitude /= 10)
menu->grid[i][21] = ((menu->last / magnitude) % 10) + '0';
// percorre a matriz do sprite menu e desenha o simbolo correspondente
for (i = 0; i < WIDTH; i++)
for (j = 0; j < HEIGHT; j++)
renderLetter(menu->grid[i][j], i, j, offmenux, offmenuy);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment