Example #1
0
File: parser.c Project: xicon73/LI2
/** Funcao que nos permite movimentar o jogador no tabuleiro */
void print_move(ESTADO e, int dx,int dy){
	int x =e.jog.x +dx;
	int y = e.jog.y +dy;
	/*estado para qual o jogo transita ao clicar no link*/
	ESTADO ne=e;
	if(e.goal.x==x && e.goal.y==y){
		ne.acao=1;
		printf("<a xlink:href=http://127.0.0.1/cgi-bin/jogo?%s>\n",estado2str(ne));
		print_goal(e);
		printf("</a >\n");
	}else{
		if(posvalida(e,x,y)==0){
			ne.jog.x=x;
			ne.jog.y=y;
			printf("<a xlink:href=http://127.0.0.1/cgi-bin/jogo?%s>\n",estado2str(ne));
			print_enemies(e);



			printf("</a >\n");

		}else{
			ne.jog.x=x;
			ne.jog.y=y;
			printf("<a xlink:href=http://127.0.0.1/cgi-bin/jogo?%s>\n",estado2str(ne));
			print_square(x,y,TAM);
			printf("</a >\n");
		}



		}


		}
Example #2
0
/**
Esta função tem como objetivo imprimir as cartas no tabuleiro.
Se a carta a apresentar se encontre na mão do jogador (mao toma o valor de 0 e o actual_jogador no estado for igual a 0),
e caso a carta seja selecionada é então adicionada ao highlight. Se já se encontrar no highlight, então é removida de lá.
Caso contrário, se a carta se encontrar na mão de um bot, é imprimido o verso de uma carta, caso contrário a carta já foi jogada por um bot logo é mostrada a carta correspondente.
@param path O path.
@param x Coordenada HTML.
@param y Coordenada HTML.
@param e O estado atual.
@param mao Número de um jogador.
@param naipe O naipe da carta (inteiro entre 0 e 3).
@param valor O valor da carta (inteiro entre 0 e 12).
*/
void imprime_carta(char *path, int x, int y, ESTADO e, int mao, int naipe, int valor) {
    char *suit = NAIPES;
    char *rank = VALORES;
    char script[10240];
    ESTADO novo = e;
    novo.card = 1;
    
    if (mao == 0 && e.actual_jogador == 0) {
        if (carta_existe (novo.highlight, naipe, valor)) {
            novo.highlight = rem_carta(novo.highlight, naipe, valor);
        }
        
        else {
            novo.highlight = add_carta(novo.highlight, naipe, valor);
        }
        
        sprintf(script, "%s?%s", SCRIPT, estado2str(novo));
        printf("<a xlink:href = \"%s\"><image x = \"%d\" y = \"%d\" height = \"110\" width = \"80\" xlink:href = \"%s/%c%c.svg\" /></a>\n", script, x, y, path, rank[valor], suit[naipe]);  
    }
    
    else {
        if (carta_existe(e.mao[1],naipe,valor) || carta_existe(e.mao[2],naipe,valor) || carta_existe(e.mao[3],naipe,valor))
            printf("<image x = \"%d\" y = \"%d\" height = \"110\" width = \"80\" xlink:href = \"%s/11C.png\" />\n", x, y, path);
        else printf("<image x = \"%d\" y = \"%d\" height = \"110\" width = \"80\" xlink:href = \"%s/%c%c.svg\" />\n", x, y, path, rank[valor], suit[naipe]);
    }
}
Example #3
0
void imprime_botao_teste(ESTADO e){

    char script[10240];
    ESTADO novo = {{0},0,{0},0,0,0,0,-1,0,{0},0,1};

    novo.mao[0] = (long long int)262175;
    novo.mao[1] = (long long int)2147737600;
    novo.mao[2] = (long long int)17594266419200;
    novo.mao[3] = (long long int)17042430230560;
    novo.start = 0;
    novo.actual_jogador = primeiro_jogar(novo);
    novo.cartas_bots[novo.actual_jogador] = 1;
    novo.ultimo_jogador = novo.actual_jogador;
    novo.layout = 0;
    novo.cartas[0] = numero_de_cartas(novo.mao[0]);
    novo.cartas[1] = numero_de_cartas(novo.mao[1]);
    novo.cartas[2] = numero_de_cartas(novo.mao[2]);
    novo.cartas[3] = numero_de_cartas(novo.mao[3]);


        e = bots1(novo);

        while(e.actual_jogador != 0){
            e = bots2(e);
        }

    sprintf(script, "%s?%s", SCRIPT, estado2str(e));
    printf("<a xlink:href = \"%s\"><image x = \"1050\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/imagens/test.png\" /></a>\n", script);

}
Example #4
0
/**
A função imprime_botao_clear imprime o botão clear para o browser, o qual vai limpar as cartas do highlight, e retorná-las à nossa mão.
@param e O estado actual.
*/
void imprime_botao_clear(ESTADO e) {
    
    char script[10240];
    
    e = clear(e);
    sprintf(script, "%s?%s", SCRIPT, estado2str(e));
    printf("<a xlink:href = \"%s\"><image x = \"710\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/ClearLI2.png\" /></a>\n", script);
}
Example #5
0
int main(){
  ESTADO e, e1;
  char str[10240];
  int i;
  for(i=0;i<4;i++){
    e.mao[i]=0;
    e.cartas[i]=0;
  }
  e.highlight=0;
  e.play=e.pass=e.card=0;
  printf("%s\n", estado2str(e));

  scanf("%s", str);
  e=str2estado(str);
  e1 = e;
  e1.play=1;
  printf("<a xlink:href=\"localhost/cgi-bin/cartas?%s\">asdf</a>\n", estado2str(e1));  
}
Example #6
0
/*
A função imprime_botao_layout imprime um botão que muda a organização inicial das cartas (de naipe para valor).
@param e O estado actual.
*/ 
void imprime_botao_layout(ESTADO e) {
    
    char script[10240];
    
    if (e.layout == 0) {
        e.layout = 1;
    }
    else {
        e.layout = 0;
    }
    
    sprintf(script, "%s?%s", SCRIPT, estado2str(e));
    printf("<a xlink:href = \"%s\"><image x = \"1140\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/Reset.png\" /></a>\n", script);
}
Example #7
0
/**
A função imprime_botao_sugestao imprime o botão de sugestão para o browser.
@param e O estado actual.
*/
void imprime_botao_sugestao(ESTADO e) {

    char script[10240];
    e = clear(e);

    e = sugestao(e);

    if (e.highlight == 0){
        e = passar(e);

}
    sprintf(script, "%s?%s", SCRIPT, estado2str(e));
    printf("<a xlink:href = \"%s\"><image x = \"40\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/imagens/sugestaostallman.gif\" /></a>\n", script);
}
Example #8
0
/*
A função imprime_botao_trofeu imprime uma imagem com um trofeu correspondente ao vencedor do jogo no final do mesmo.
@param e O estado actual.
*/
void imprime_botao_trofeu(ESTADO e) {
    
    char script[10240];
    
    if (e.cartas[0] == 0) {
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<a xlink:href = \"%s\"><image x = \"260\" y = \"50\" height = \"750\" width = \"750\" xlink:href = \"http://localhost/cards/trofeu.png\" /></a>\n", script);
    }
    
    if (e.cartas[1] == 0) {
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<a xlink:href = \"%s\"><image x = \"260\" y = \"50\" height = \"750\" width = \"750\" xlink:href = \"http://localhost/cards/trofeu2.png\" /></a>\n", script);
    }
    
    if (e.cartas[2] == 0) {
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<a xlink:href = \"%s\"><image x = \"260\" y = \"50\" height = \"750\" width = \"750\" xlink:href = \"http://localhost/cards/trofeu3.png\" /></a>\n", script);
    }
    
    if (e.cartas[3] == 0){
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<a xlink:href = \"%s\"><image x = \"260\" y = \"50\" height = \"750\" width = \"750\" xlink:href = \"http://localhost/cards/trofeu4.png\" /></a>\n", script);
    } 
}
Example #9
0
/**
A função imprime_botao_exit imprime o botão de exit para o browser, de forma a ser possível recomeçar o jogo, voltando ao menu inicial com o botão start.
@param e O estado actual.
*/
void imprime_botao_exit(ESTADO e) {
    
    char script[10240];
    
    if (e.start == 0){
        e = bots1(baralhar());
        
        while(e.actual_jogador != 0){
            e = bots2(e);
        }
        
        e.start=1;
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<a xlink:href = \"%s\"><image x = \"1140\" y = \"603\" height = \"80\" width = \"100\" xlink:href = \"http://localhost/cards/ExitLI2.png\" /></a>\n", script);   
    }
}
Example #10
0
/**
A função imprime_botao_reset imprime um botão que quando algum dos jogadores ganha a ronda, ou seja, acabam as cartas da sua mão.
@param e O estado actual.
*/
void imprime_botao_reset(ESTADO e) {
    
    char script[10240];
    
    if (e.cartas[0] != 0 && e.cartas[1] != 0 && e.cartas[2] != 0 && e.cartas[3] != 0) {
        
    }
    else {
        e = bots1(baralhar());
        
        while(e.actual_jogador != 0) {
            e = bots2(e);
        }
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<a xlink:href = \"%s\"><image x = \"850\" y = \"530\" height = \"220\" width = \"200\" xlink:href = \"http://localhost/cards/playagain.png\" /></a>\n", script);
    }
}
Example #11
0
/**
A função imprime_botao_start imprime o botão de start do menu inicial para o browser.
@param e O estado actual.
*/
void imprime_botao_start(ESTADO e) {
    
    char script[10240];
    
    if (e.start == 1){
        e = bots1(baralhar());
        
        while(e.actual_jogador != 0){
            e = bots2(e);
        }
        
        e.start=0;
        sprintf(script, "%s?%s", SCRIPT, estado2str(e));
        printf("<rect x = \"0\" y = \"0\" height = \"800\" width = \"1280\" style = \"fill:#000000\"/>\n");
        printf("<image x = \"0\" y = \"0\" height = \"800\" width = \"1280\" xlink:href = \"http://localhost/cards/bg.png\" /></a>\n");
        printf("<a xlink:href = \"%s\"><image x = \"1080\" y = \"650\" height = \"110\" width = \"150\" xlink:href = \"http://localhost/cards/StartLI2.png\" /></a>\n", script);
    }
}
Example #12
0
/**
A função imprime_botao_sugestao imprime o botão de sugestão para o browser.
@param e O estado actual.
*/
void imprime_botao_sugestao(ESTADO e) {
    
    char script[10240];
    
    e = clear(e);
    
    if (e.ultima_jogada == -1) e = sugestao1(e);
    else{
        e = sugestao2(e);
        if (e.highlight == 0){
            e.ultima_jogada = e.ultima_jogada;
            e.actual_jogador = incrementa_jogador(e);
            e.pass = 1;
        }
    }
    sprintf(script, "%s?%s", SCRIPT, estado2str(e));
    printf("<a xlink:href = \"%s\"><image x = \"40\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/sugestaostallman.gif\" /></a>\n", script);
}
Example #13
0
/** 
Esta função trata de imprimir o botão "PASS" na página HTML. Quando o utilizador não tem nenhuma combinação válida possível
em relação a última jogada, é possível usar o botão "PASS". O utilizador pode usar sempre o botão "PASS",
excepto quando é o primeiro a jogar (3 de ouros) ou quando todos passam a jogada e este foi o ultimo a jogar uma carta/combinaçao 
@param e O estado actual.
*/
void imprime_botao_passar(ESTADO e) {
    
    char script[10240];
    ESTADO novo = e;
    
    if (e.actual_jogador == 0 && e.ultima_jogada != -1 && e.ultimo_jogador != 0) {
        novo.ultima_jogada = e.ultima_jogada;
        novo.highlight = 0;
        novo.actual_jogador = incrementa_jogador(e);
        novo.pass = 1;
        sprintf(script, "%s?%s", SCRIPT, estado2str(novo));
        printf("<a xlink:href = \"%s\"><image x = \"610\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/PassLI2.png\" /></a>\n", script); 
    }
    
    else {
        printf("<image x = \"610\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/PassLI2out.png\" />\n");
    }
}
Example #14
0
/** 
Esta função trata de imprimir o botão "SUBMIT" na página HTML. Aqui, usamos a função posso_jogar.
Se for possível jogar, o botão é clicável, sendo primitida a jogada. Caso contrário, o botão fica mais escuro, não sendo clicável. 
@param e O estado actual.
*/
void imprime_botao_jogar(ESTADO e) {
    
    char script[10240];
    ESTADO novo = e;
    
    if (posso_jogar(e) && e.highlight != 0) {
        novo.ultima_jogada = e.highlight;
        novo.cartas[0] = e.cartas[0] - (numero_de_cartas(novo.ultima_jogada));
        novo.actual_jogador = incrementa_jogador(e);
        novo.play = 1;
        novo.ultimo_jogador = 0;
        sprintf(script, "%s?%s", SCRIPT, estado2str(novo));
        printf("<a xlink:href = \"%s\"><image x = \"510\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/SubmitLI2.png\" /></a>\n", script); 
    }
    
    else {
        printf("<image x = \"510\" y = \"710\" height = \"80\" width = \"80\" xlink:href = \"http://localhost/cards/SubmitLI2out.png\" />\n"); 
    }
}