Mostrando entradas con la etiqueta la. Mostrar todas las entradas
Mostrando entradas con la etiqueta la. Mostrar todas las entradas

Pruebas PacMan

Primeras pruebas a color del juego del Comecocos. Sólo está implementado el movimiento del PacMan comiendo los círculos y las frutas y el paso de un lado al otro por el pasillo. Faltan los fantasmas y la dinámica de persecución y choques... 
Desarrollado para LINUX en Code::Blocks. No os correrá correctamente en Wine...
///Carrega de llibreries
#include<stdio.h>
#include<stdlib.h>
#include <termios.h>

static struct termios old, new;

///variables globals
int punts=0,vides=2,nivell=1,atac=0;
int matriu[24][28]={
35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,
35,46,46,46,46,46,46,46,46,46,46,46,46,35,35,46,46,46,46,46,46,46,46,46,46,46,46,35,
35,67,35,35,35,35,46,35,35,35,35,35,46,35,35,46,35,35,35,35,35,46,35,35,35,35,67,35,
35,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,35,
35,46,35,35,35,35,46,35,35,46,35,35,35,35,35,35,35,35,46,35,35,46,35,35,35,35,46,35,
35,46,46,46,46,46,46,35,35,46,46,46,46,35,35,46,46,46,46,35,35,46,46,46,46,46,46,35,
35,35,35,35,35,35,46,35,35,35,35,35,32,35,35,32,35,35,35,35,35,46,35,35,35,35,35,35,
32,32,32,32,32,35,46,35,35,32,32,32,32,32,32,32,32,32,32,35,35,46,35,32,32,32,32,32,
32,32,32,32,32,35,46,35,35,32,35,35,35,32,32,35,35,35,32,35,35,46,35,32,32,32,32,32,
35,35,35,35,35,35,46,35,35,32,35,32,32,32,32,32,32,35,32,35,35,46,35,35,35,35,35,35,
101,32,32,32,32,32,46,32,32,32,35,32,32,32,32,32,32,35,32,32,32,46,32,32,32,32,32,101,
35,35,35,35,35,35,46,35,35,32,35,32,32,32,32,32,32,35,32,35,35,46,35,35,35,35,35,35,
32,32,32,32,32,35,46,35,35,32,35,35,35,35,35,35,35,35,32,35,35,46,35,32,32,32,32,32,
32,32,32,32,32,35,46,35,35,32,32,32,32,32,32,32,32,32,32,35,35,46,35,32,32,32,32,32,
35,35,35,35,35,35,46,35,35,32,35,35,35,35,35,35,35,35,32,35,35,46,35,35,35,35,35,35,
35,46,46,46,46,46,46,46,46,46,46,46,46,35,35,46,46,46,46,46,46,46,46,46,46,46,46,35,
35,46,35,35,35,35,46,35,35,35,35,35,46,35,35,46,35,35,35,35,35,46,35,35,35,35,46,35,
35,67,46,46,35,35,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,35,35,46,46,67,35,
35,35,35,46,35,35,46,35,35,46,35,35,35,35,35,35,35,35,46,35,35,46,35,35,46,35,35,35,
35,46,46,46,46,46,46,35,35,46,46,46,46,35,35,46,46,46,46,35,35,46,46,46,46,46,46,35,
35,46,35,35,35,35,35,35,35,35,35,35,46,35,35,46,35,35,35,35,35,35,35,35,35,35,46,35,
35,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,35,
35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35};
int X,Y,V,Z;
int punts,vides,nivell;

/// Declaració de funcions
/* Initialize new terminal i/o settings */
void initTermios(int echo){
  tcgetattr(0, &old); /* grab old terminal i/o settings */
  new = old; /* make new settings same as old settings */
  new.c_lflag &= ~ICANON; /* disable buffered i/o */
  new.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
  tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */
}
/* Restore old terminal i/o settings */
void resetTermios(void){
  tcsetattr(0, TCSANOW, &old);
}
/* Read 1 character - echo defines echo mode */
char getch_(int echo){
  char ch;
  initTermios(echo);
  ch = getchar();
  resetTermios();
  return ch;
}
/* Read 1 character without echo */
char getch(void){
  return getch_(0);
}
/* Read 1 character with echo */
char getche(void){
  return getch_(1);
}
/* Funció que reemplaça el gotoxy de conio.h */
void gotoxy(int x, int y){
    printf("%c[%d;%df",0x1B,y,x);
}
/* Funció que reemplaça l'ordre delay o retard */
void delay(int del){
    int c,d;
    for (c=1;c<= del;c++) {
        for (d=1;d <=del;d++){
        }
    }
}
/* Funció per presentar la pantalla */
void mostra(){
int i,j;

for(i=0;i<24;i++){
        printf("ntt");
        for(j=0;j<28;j++){
            if(matriu[i][j]==35){
                printf("e[104m e[0m");
            }
            if(matriu[i][j]==46){
                printf("e[96m*e[0m");
            }
            if(matriu[i][j]==64){
if(atac>0){
printf("e[5me[93m@e[0m");
                }
                else{
printf("e[93m@e[0m");
                }
            }
            if(matriu[i][j]==111){
                printf(" ");
            }
            if(matriu[i][j]==32||matriu[i][j]==101){
                printf(" ");
            }
            if(matriu[i][j]==67){
                printf("e[96m█e[0m");
            }
        }
    }
    gotoxy(49,2);
    printf("e[93m+---------------+e[0m");
    gotoxy(49,3);
    printf("e[93m│   COMECOCOS   │e[0m");
    gotoxy(49,4);
    printf("e[93m+---------------+e[0m");
    gotoxy(49,5);
    printf("Punts:  %d",punts);
    gotoxy(49,6);
    printf("Vides:  %d",vides);
    gotoxy(49,7);
    printf("Nivell: %d",nivell);
    gotoxy(49,10);
    printf("e[90mPosició X=%d Y=%de[0m",X,Y);
    gotoxy(49,11);
    printf("e[90mCaracter: %ce[0m",matriu[X][Y]);
    gotoxy(100,29);
}
/* Funcio dreta */
void dreta(){

    if(matriu[X][Y+1]!=35){
        system("clear");
        if(matriu[X][Y+1]==46){
            punts++;
        }
        if(matriu[X][Y+1]==67){
            atac=1;
            punts=punts+10;
        }
        matriu[X][Y+1]=matriu[X][Y];
        matriu[X][Y]=32;
        Y++;
        if(matriu[10][27]==64){
            matriu[10][27]=32;
            matriu[10][0]=64;
            X=10;
            Y=0;
            atac=0;
        }
        mostra();
    }

}
/* Funcio esquerra */
void esquerra(){
    if(matriu[X][Y-1]!=35){
        system("clear");
        if(matriu[X][Y-1]==46){
            punts++;
        }
        if(matriu[X][Y-1]==67){
            atac=1;
            punts=punts+10;
        }
        matriu[X][Y-1]=matriu[X][Y];
        matriu[X][Y]=32;
        Y--;
        if(matriu[10][0]==64){
            matriu[10][0]=32;
            matriu[10][27]=64;
            X=10;
            Y=27;
            atac=0;
        }
        mostra();
    }
}
/* Funcio adalt */
void adalt(){
    if(matriu[X-1][Y]!=35){
        system("clear");
        if(matriu[X-1][Y]==46){
            punts++;
        }
        if(matriu[X-1][Y]==67){
            atac=1;
            punts=punts+10;
        }
        matriu[X-1][Y]=matriu[X][Y];
        matriu[X][Y]=32;
        X--;
        mostra();
    }
}
/* Funcio baix */
void baix(){
    if(matriu[X+1][Y]!=35){
        system("clear");
        if(matriu[X+1][Y]==46){
            punts++;
        }
        if(matriu[X+1][Y]==67){
            atac=1;
            punts=punts+10;
        }
        matriu[X+1][Y]=matriu[X][Y];
        matriu[X][Y]=32;
        X++;
        mostra();
    }
}
/* Funció MAIN del programa */
int main(void){
int i,j,x,y,m;
char opcio;

X=13;Y=14;
matriu[X][Y]=64;
    mostra();
    while(opcio!='q'&&opcio!='Q'){
        opcio=getch();///scanf("%c",&opcio);
        switch(opcio){
        case 'd':
            dreta();
        break;
        case'C':
            dreta();
        break;
        case 'e':
            esquerra();
        break;
        case'D':
            esquerra();
        break;
        case 'a':
            adalt();
        break;
        case'A':
            adalt();
        break;
        case 'b':
            baix();
        break;
        case'B':
            baix();
        break;
        }
    }
    return 0;
}

Día de la semana

Dada una fecha, el programa dice el día de la semana al que corresponde.

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;

bool bisies (int fecha);
int bisiesant (int fecha2);

int main()
{
    /* Declaración de variables */
   
    int ano,dia;
    int mes;
    int total;
    int i;
    int sol;
   
    /* Entrada de datos */
   
    cout<<"Introduzca el año de la fecha que desee estudiar"<<endl;
    cin>>agno;
    cout<<"Introduzca el numero del mes"<<endl;
    cin>>mes;
    cout<<"Introduzca el numero del dia"<<endl;
    cin>>dia;
   
    /* Procedimiento */
   
    total=30*(mes-1);
    total=total+dia;
   
    if (mes>2)
       {if (bisies(agno))
           {total=total-1;}
       else
           {total=total-2;}}
   
    if (mes<=7)   
       {total=total+mes/2;}
    else
        {total=total+4+(mes-7)/2;}
   
    i=1900;
   
    while (i<agno)
          {
          total=total+365;
          i++;
          }
   
    total=total+bisiesant(agno);
       
    sol=total%7;
   
    /* Salida de resultados */
   
    cout<<"La fecha introducida corresponde con un ";
    switch (sol)
    {
           case 1:
           {cout<<"lunes"<<endl;}
           break;
           case 2:
           {cout<<"martes"<<endl;}
           break;
           case 3:
           {cout<<"miercoles"<<endl;}
           break;
           case 4:
           {cout<<"jueves"<<endl;}
           break;
           case 5:
           {cout<<"viernes"<<endl;}
           break;
           case 6:
           {cout<<"sabado"<<endl;}
           break;
           case 0:
           {cout<<"domingo"<<endl;}      
    }
   
    system("PAUSE");
    return 0;
}

bool bisies(int fecha)
{
     bool bisiesto;
    
     if ((fecha%100)==0)
        {if ((fecha%400)==0)
            {bisiesto=true;}
         else
            {bisiesto=false;}}
     else
         {if ((fecha%4)==0)
             {bisiesto=true;}
         else
         {bisiesto=false;}}
        
     return bisiesto;
}

int bisiesant(int fecha2)
{
    int j,k;
   
    k=0;

    j=1900;
    while (j<fecha2)
        {
                    if (bisies(j))
                    k++;
                    j++;
        }
       
    return k;

}