Juego pong

 avatar
unknown
plain_text
4 years ago
4.7 kB
4
Indexable
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#define V 21
#define H 75

int pelX, pelY, iniJug, finJug, iniIa, finIa;
    int modX, modY, modIa;
    char mundo [V] [H];

void inicio (char mundo [V] [H], int pelX, int pelY, int iniJug, int finJug, int iniIa, int finIa);
void borde (char mundo[V] [H]);
void rjug (char mundo[V] [H], int iniJug, int finJug);
void ria (char mundo[V] [H], int iniIa, int finIa);
void pel (char mundo[V] [H], int pelX, int pelY);
void leermundo (char mundo [V] [H]);
void gameloop (char mundo [V] [H], int pelX, int pelY, int iniJug, int finJug, int iniIa, int finIa, int modX, int modY, int modIa);
void draw (char mundo [V] [H]);
void input (char mundo [V] [H], int *pelX, int *pelY, int *iniJug, int *finJug, int *iniIa, int *finIa, int *modX, int *modY, int *modIa, int *gol);
void update(char mundo [V] [H], int pelX, int pelY, int iniJug, int finJug, int iniIa, int finIa);


int main(){

    pelX = 37;
    pelY = 10;

    iniJug = 8;
    finJug = 12;

    iniIa = 8;
    finIa = 12;

    modX = -1;
    modY = -1;

    modIa = -1;

    inicio (mundo, pelX, pelY, iniJug, finJug, iniIa, finIa);
    gameloop (mundo, pelX, pelY, iniJug, finJug, iniIa, finIa, modX, modY, modIa);
    system ("pause");
    return 0;
}

void inicio (char mundo [V] [H], int pelX, int pelY, int iniJug, int finJug, int iniIa, int finIa) {
    borde(mundo);
    rjug (mundo, iniJug, finJug);
    ria (mundo, iniIa, finIa);
    pel(mundo, pelX, pelY);
}

void borde (char mundo[V] [H]){
    int i, j;

    for (i = 0; i < V; i++) {
        for (j = 0; j < H; j++) {
            if (i == 0 || i == V-1) {
                mundo[i] [j] = '_';
            }
            else if (j == 0 || j == H-1) {
                mundo[i] [j] = '|'; 
            }
            else {
                mundo[i] [j] = ' ';
            }
        }
    }
}

void rjug (char mundo[V] [H], int iniJug, int finJug) {
    int i, j;

    for(i = iniJug; i<= finJug; i++) {
        for(j = 2; j <= 3; j++) {
            mundo[i] [j] = 'X';
        }
    }
}



void ria (char mundo[V] [H], int iniIa, int finIa) {
    int i, j;

    for(i = iniIa; i<= finIa; i++) {
        for(j = H - 4; j <= H - 3; j++) {
            mundo[i] [j] = 'X';
        }
    }
}

void pel (char mundo[V] [H], int pelX, int pelY) {
    mundo [pelX] [pelY] = 'O';
}

void leermundo (char mundo [V] [H]) {
    int i, j;

    for (i = 0; i < V; i++){
        for(j = 0; j < H; j++) {
            printf ("%c", mundo [i] [j]);
        }
        printf ("\n");
    }
}

void gameloop (char mundo [V] [H], int pelX, int pelY, int iniJug, int finJug, int iniIa, int finIa, int modX, int modY, int modIa){
    int gol;
    gol = 0;

    do{
        draw (mundo);
        input (mundo, &pelX, &pelY, &iniJug, &finJug, &iniIa, &finIa, &modX, &modY, &modIa, &gol);
        inicio (mundo, pelX, pelY, iniJug, finJug, iniIa, finIa);
        Sleep (100);
    }while (gol == 0);
}

void draw (char mundo [V] [H]) {
    system ("cls");
    leermundo (mundo);
}

void input (char mundo [V] [H], int *pelX, int *pelY, int *iniJug, int *finJug, int *iniIa, int *finIa, int *modX, int *modY, int *modIa, int *gol){
    int i;
    char key;

    if (*pelY == 1 || *pelY == V - 2){
        *modY *= -1;                
    }

    if (*pelX == 1 || *pelX == H - 2){
        *gol = -1;
    }

    if (*pelX == 4){
        for (i = (*iniJug); i <= (*finJug); i++) {
            if (i == (*pelY)) {
                *modX *= -1;
            }
        }
    } 

    if (*pelX == H - 5){
        for (i = (*iniIa); i <= (*finIa); i++) {
            if (i == (*pelY)) {
                *modX *= -1;
            }
        }
    } 

    if (*iniIa == 1 || *finIa == V - 1){
        *modIa *= -1;
    }

    if (*gol == 0) {

        *pelX += (*modX);
        *pelY += (*modY);

        *iniIa += (*modIa);
        *finIa += (*modIa);

        if (kbhit() == 1) {
            key = getch();

            if (key == 'w'){            
                if (*iniJug != 1) {
                    *iniJug -= 1;
                    *finJug -= 1;
                }
            }

            if (key == 's'){
                if(*finJug != V - 2){
                    *iniJug += 1;
                    *finJug += 1;
                }
            }    
        }
    }
}

void update(char mundo [V] [H], int pelX, int pelY, int iniJug, int finJug, int iniIa, int finIa){
    borde(mundo);
    rjug (mundo, iniJug, finJug);
    ria (mundo, iniIa, finIa);
    pel(mundo, pelX, pelY);
}
Editor is loading...