Juego pong
unknown
plain_text
5 years ago
4.7 kB
8
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...