coordenada ó reves, nas funciós do curses é y,x en lugar de x,y

This commit is contained in:
serxoz 2021-10-24 19:00:52 +02:00
parent a497574995
commit c208d86dbc

View File

@ -1,8 +1,11 @@
#include <stdlib.h> #include <stdlib.h>
#include <time.h>
#include <curses.h> #include <curses.h>
#include "defs.h" #include "defs.h"
#define ELEFANTES 8 #define ELEFANTES 8
const int height = 40;
const int width = 80;
double distancia(struct coord c, struct coord e); double distancia(struct coord c, struct coord e);
struct coord fuxir(struct coord c, struct coord e); struct coord fuxir(struct coord c, struct coord e);
@ -44,11 +47,16 @@ void cuadra(WINDOW * win, int width, int height){
} }
void generarElefantes(struct coord *buff){ void generarElefantes(struct coord *buff){
srand ( time(NULL) );
for(int i = 0; i < ELEFANTES; ++i) { for(int i = 0; i < ELEFANTES; ++i) {
int nMax=40; int nWidthMax=width-10;
int nMin=10; int nWidthMin=10;
int rX = rand() % ((nMax+1)-nMin) + nMin; int nHeightMax=height-10;
int rY = rand() % ((nMax+1)-nMin) + nMin; int nHeightMin=10;
int rX = rand() % ((nWidthMax+1)-nWidthMin) + nWidthMin;
int rY = rand() % ((nHeightMax+1)-nHeightMin) + nHeightMin;
struct coord elefante = {rX+2,rY+2}; struct coord elefante = {rX+2,rY+2};
buff[i] = elefante; buff[i] = elefante;
@ -60,9 +68,10 @@ int screen() {
noecho(); noecho();
curs_set(0); //cursor invisible curs_set(0); //cursor invisible
int height, width, start_y, start_x; /* int height, width, start_y, start_x; */
height = 40; /* height = 40; */
width = 80; /* width = 80; */
int start_y, start_x;
start_y = 0; start_y = 0;
start_x = 0; start_x = 0;
@ -73,14 +82,17 @@ int screen() {
box(win, 0, 0); box(win, 0, 0);
cuadra(win, width, height); cuadra(win, width, height);
struct coord cazador = {height/3,width/2}; /* struct coord cazador = {height/3,width/2}; */
mvwprintw(win, cazador.x, cazador.y, "^"); struct coord cazador = {10,10};
mvwprintw(win, cazador.y, cazador.x, "^");
struct coord elefantes[ELEFANTES] = {0}; struct coord elefantes[ELEFANTES] = {0};
generarElefantes(elefantes); generarElefantes(elefantes);
for(int i = 0; i < ELEFANTES; i++){ for(int i = 0; i < ELEFANTES; i++){
mvwprintw(win, elefantes[i].x, elefantes[i].y, "?"); mvwprintw(win, elefantes[i].y, elefantes[i].x, "?");
/* mvwprintw(win, i+1, 1, "elefante x:%i, y:%i",elefantes[i].x, elefantes[i].y); */
} }
while(true){ while(true){
@ -88,37 +100,37 @@ int screen() {
switch(c){ switch(c){
case KEY_UP: case KEY_UP:
/* mvwprintw(win, 1, 1, "up"); */ /* mvwprintw(win, 1, 1, "up"); */
if (mvwinch(win, cazador.x-1, cazador.y) == ' '){ if (mvwinch(win, cazador.y-1, cazador.x) == ' '){
mvwprintw(win, cazador.x, cazador.y, " "); mvwprintw(win, cazador.y, cazador.x, " ");
cazador.x = cazador.x - 1; cazador.y = cazador.y - 1;
mvwprintw(win, cazador.x, cazador.y, "^"); mvwprintw(win, cazador.y, cazador.x, "^");
wrefresh(win); wrefresh(win);
} }
break; break;
case KEY_DOWN: case KEY_DOWN:
/* mvwprintw(win, 1, 1, "down"); */ /* mvwprintw(win, 1, 1, "down"); */
if (mvwinch(win, cazador.x+1, cazador.y) == ' '){ if (mvwinch(win, cazador.y+1, cazador.x) == ' '){
mvwprintw(win, cazador.x, cazador.y, " "); mvwprintw(win, cazador.y, cazador.x, " ");
cazador.x = cazador.x + 1; cazador.y = cazador.y + 1;
mvwprintw(win, cazador.x, cazador.y, "^"); mvwprintw(win, cazador.y, cazador.x, "^");
wrefresh(win); wrefresh(win);
} }
break; break;
case KEY_RIGHT: case KEY_RIGHT:
/* mvwprintw(win, 1, 1, "right"); */ /* mvwprintw(win, 1, 1, "right"); */
if (mvwinch(win, cazador.x, cazador.y+1) == ' '){ if (mvwinch(win, cazador.y, cazador.x+1) == ' '){
mvwprintw(win, cazador.x, cazador.y, " "); mvwprintw(win, cazador.y, cazador.x, " ");
cazador.y = cazador.y + 1; cazador.x = cazador.x + 1;
mvwprintw(win, cazador.x, cazador.y, "^"); mvwprintw(win, cazador.y, cazador.x, "^");
wrefresh(win); wrefresh(win);
} }
break; break;
case KEY_LEFT: case KEY_LEFT:
/* mvwprintw(win, 1, 1, "left"); */ /* mvwprintw(win, 1, 1, "left"); */
if (mvwinch(win, cazador.x, cazador.y-1) == ' '){ if (mvwinch(win, cazador.y, cazador.x-1) == ' '){
mvwprintw(win, cazador.x, cazador.y, " "); mvwprintw(win, cazador.y, cazador.x, " ");
cazador.y = cazador.y - 1; cazador.x = cazador.x - 1;
mvwprintw(win, cazador.x, cazador.y, "^"); mvwprintw(win, cazador.y, cazador.x, "^");
wrefresh(win); wrefresh(win);
} }
break; break;
@ -133,11 +145,11 @@ int screen() {
struct coord nova; struct coord nova;
nova = fuxir(cazador, elefante); nova = fuxir(cazador, elefante);
if (mvwinch(win, nova.x, nova.y) == ' '){ if (mvwinch(win, nova.y, nova.x) == ' '){
mvwprintw(win, elefante.x, elefante.y, " "); mvwprintw(win, elefante.y, elefante.x, " ");
elefante = nova; elefante = nova;
elefantes[i] = nova; //garda no array a posicion deste elefante elefantes[i] = nova; //garda no array a posicion deste elefante
mvwprintw(win, elefante.x, elefante.y, "?"); mvwprintw(win, elefante.y, elefante.x, "?");
wrefresh(win); wrefresh(win);
} }
} }