Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "header.h"
- int efetuaLogin(char * fifoCliente){
- int fdLoginPedido, fdLoginResposta, pedServ, respServ, r;
- pedidoLogin p;
- while(access(FIFO_SERV_LOGIN,F_OK) != 0){
- printf("Nao existe ligacao ao servidor...\n");
- //refresh();
- sleep(5);
- }
- fdLoginPedido = open(FIFO_SERV_LOGIN, O_WRONLY);
- if(fdLoginPedido == -1){
- printf("Erro no fifo do servidor!\n");
- close(fdLoginPedido);
- return 0;
- }
- //Cria fifo do cliente com identificação
- fdLoginResposta = open(fifoCliente,O_RDWR);
- if(fdLoginResposta == -1)
- printf("Erro no fifo do cliente!\n");
- printf("Introduza o seu username: ");
- scanf(" %49[^\n]", p.username);
- printf("Introduza a sua password: ");
- scanf(" %49[^\n]", p.password);
- p.clientePid = getpid();
- //Manda a informaçao para o servidor
- pedServ = write(fdLoginPedido, &p, sizeof(p));
- //printf("%s\t%s\n", p.username, p.password);
- //Recebe resposta do servidor (0 ou 1)
- respServ = read(fdLoginResposta, &r, sizeof(int));
- //printf("Recebe ------> %d\n", r);
- if(r == 1)
- printf("Login efetuado com sucesso!\n");
- if(r == 2)
- printf("Utilizador ja efetuou login!\n");
- else
- printf("Erro ao efetuar login, tente novamente!\n");
- close(fdLoginPedido);
- close(fdLoginResposta);
- return r;
- }
- /*
- int tabuleiro(){
- int i,j,x=0, nInimigos = 0, nObjectos = 0;
- labirinto lab1;
- lab1.tamX = 20;
- lab1.tamY = 30;
- lab1.nObjectos = 50;
- lab1.nInimigos = 20;
- lab1.campo = (int **)malloc(lab1.tamX * sizeof(int *));
- if(lab1.campo == NULL){
- printf ("Erro: Memoria Insuficiente");
- return 0;
- }
- for(i=0;i<lab1.tamY;i++){
- lab1.campo[i] = (int *) malloc(lab1.tamY * sizeof(int));
- if (lab1.campo[i] == NULL) {
- printf ("Erro: Memoria Insuficiente");
- return 0;
- }
- }
- //Campo inicial
- for(i=0;i<lab1.tamX;i++){
- for(j=0;j<lab1.tamY;j++){
- if(i==(lab1.tamX-1) || j==(lab1.tamY-1) || i==0 || j==0){
- lab1.campo[i][j] = 2;
- }
- else if(i%2==0 && j%2==0){
- lab1.campo[i][j] = 2;
- }
- else{
- x = rand() % 101;
- //system("pause");
- if(x>=50)
- lab1.campo[i][j] = 0;
- else if(x<50)
- lab1.campo[i][j] = 1;
- }
- printf("%d", lab1.campo[i][j]);
- }
- printf("\n");
- }
- nInimigos = lab1.nInimigos;
- nObjectos = lab1.nObjectos;
- //campo com objectos e inimigos
- do{
- for(i=0;i<lab1.tamX;i++){
- for(j=0;j<lab1.tamY;j++){
- if(lab1.campo[i][j]==0){
- x = rand() % 101;
- if(x>=0 && x<=5 && nInimigos>0){
- lab1.campo[i][j] = 4;
- nInimigos--;
- }
- else if(x>5 && x<= 15 && nObjectos >0){
- lab1.campo[i][j] = 3;
- nObjectos--;
- }
- }
- }
- }
- }while(nObjectos>0 && nInimigos>0);
- printf("\n\n\n");
- //Imprime campo
- for(i=0;i<lab1.tamX;i++){
- for(j=0;j<lab1.tamY;j++){
- printf("%d", lab1.campo[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
- */
- void menu(char * fcliente){
- int op, returnLogin = 0;
- do{
- printf("\n***** MENU PRINCIPAL *****\n");
- if(returnLogin != 1)
- printf("1 - Login\n");
- printf("2 - Jogar\n");
- printf("3 - Sair\n");
- printf("Escolha uma opcao: ");
- scanf("%d", &op);
- switch(op){
- case 1: if(returnLogin != 1)
- returnLogin = efetuaLogin(fcliente);
- else
- printf("opcao invalida!\n");
- break;
- case 2: break;
- case 3: printf("A encerrar o jogo...\n");
- unlink(fcliente);
- exit(0);
- default: printf("Opcao invalida!\n");
- }
- }while(op > 0 && op < 4);
- }
- void recebeSinal(int sig){
- if(sig == SIGUSR1){
- printf("\nO jogo vai encerrar...\n");
- sleep(2);
- char fifoClienteTmp[TAM];
- sprintf(fifoClienteTmp, "cliente%d", getpid());
- unlink(fifoClienteTmp);
- exit(0);
- }
- }
- int main(void){
- int pid;
- char fifoCliente[TAM];
- signal(SIGUSR1, recebeSinal);
- pid = getpid();
- sprintf(fifoCliente, "cliente%d", pid);
- mkfifo(fifoCliente, 0600);
- menu(fifoCliente);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement