Dev - C++ - programa.exe dejó de funcionar

   
Vista:

programa.exe dejó de funcionar

Publicado por Alejandro Santoscoy (1 intervención) el 26/03/2018 06:38:37
Hola buenas noches, soy relativamente nuevo en el mundo de la programación y estoy tratando de hacer el programa de Pong (de los primeros juegos de Atari) y estoy empezando en imprimir en pantalla el borde del juego, las raquetas y la pelota.
El programa me compila pero en el output me aparece el mensaje "Proyecto 1.exe dejó de funcionar" de parte de mi sistema operativo, Windows 10.
Quería saber si es un problema con mi código, el compilador o el sistema operativo que uso.
Adjunto el código a continuación:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//PONG
#include <iostream>
#define horizontal 84
#define vertical 24
using namespace std;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int inicio(char campo[vertical][horizontal], int inicialjugador1, int finaljugador1, int inicialjugador2, int finaljugador2, int pelotaX, int pelotaY);
int orilla(char campo[vertical][horizontal]);
int paleta1(char campo[vertical][horizontal], int inicialjugador1, int finaljugador1);
int paleta2(char campo[vertical][horizontal], int inicialjugador2, int finaljugador2);
int pelota(char campo[vertical][horizontal], int pelotaX, int pelotaY);
int LecturaDeCampo(char campo[vertical][horizontal]);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main() {
	int inicialjugador1, finaljugador1, inicialjugador2, finaljugador2, pelotaX, pelotaY;
	char campo[vertical][horizontal];
	pelotaX=42;
	pelotaY=12;
	inicialjugador1=10;
	finaljugador1=14;
	inicialjugador2=10;
	finaljugador2=14;
	inicio(campo, inicialjugador1, finaljugador1, inicialjugador2, finaljugador2, pelotaX, pelotaY);
	LecturaDeCampo (campo);
	return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int inicio(char campo[vertical][horizontal], int inicialjugador1, int finaljugador1, int inicialjugador2, int finaljugador2, int pelotaX, int pelotaY){
	orilla (campo);
	paleta1 (campo, inicialjugador1, finaljugador1);
	paleta2 (campo, inicialjugador2, finaljugador2);
	pelota (campo, pelotaX, pelotaY);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int orilla(char campo[vertical][horizontal]){
	char a;
	for(int i=0; i<=vertical; i++){
		for(int j=0; j<=horizontal; j++){
			if(i==0&&j==0){
				a=201;
				campo[i][j]=a;
			}
			else{
				if(i==0&&j==horizontal){
					a=187;
					campo[i][j]=a;
				}
				else{
					if(i==vertical&&j==0){
						a=200;
						campo[i][j]=a;
					}
					else{
						if(i==vertical&&j==horizontal){
							a=188;
							campo[i][j]=a;
						}
						else{
							if((i==0||i==vertical)&&(j>0||j<horizontal)){
								a=205;
								campo[i][j]=a;}
								else{
									if((i>0||i<vertical)&&(j==0||j==horizontal)){
										a=186;
										campo[i][j]=a;
									}
									else{
										campo[i][j]=' ';
									}
								}
							}
						}
					}
				}
			}
		}
	}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
int paleta1(char campo[vertical][horizontal], int inicialjugador1, int finaljugador1){
	char b=219;
	for(int i=inicialjugador1; i<=finaljugador1; i++){
		for(int j=2; j<=3; j++){
			campo[i][j]=b;
		}
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int paleta2(char campo[vertical][horizontal], int inicialjugador2, int finaljugador2){
	char b=219;
	for(int i=inicialjugador2; i<=finaljugador2; i++){
		for(int j=horizontal-3; j<=horizontal-2; j++){
			campo[i][j]=b;
		}
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int pelota(char campo[vertical][horizontal], int pelotaX, int pelotaY){
	char k=48;
	campo[pelotaX][pelotaY]=48;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int LecturaDeCampo(char campo[vertical][horizontal]){
	for(int i=0; i<=vertical; i++){
		for(int j=0; j<=horizontal; j++){
			cout<<campo[i][j];
		}
		cout<<endl;
	}
}
Espero que puedan ayudarme y de antemano gracias.
Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

programa.exe dejó de funcionar

Publicado por Thanatos (133 intervenciones) el 28/03/2018 04:07:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <windows.h>
#include <iostream>
#include <vector>
 
using namespace std;
 
namespace {
    const unsigned char Espacio   =  32;
    const unsigned char Pelota    =  48;
    const unsigned char BarraVert = 186;
    const unsigned char EsqSupDer = 187;
    const unsigned char EsqInfDer = 188;
    const unsigned char EsqInfIzq = 200;
    const unsigned char EsqSupIzq = 201;
    const unsigned char BarraHori = 205;
    const unsigned char BarraRell = 219;
}
 
void inicio(vector<vector<unsigned char> > &, size_t, size_t, size_t, size_t, size_t, size_t);
void orilla(vector<vector<unsigned char> > &);
void paleta1(vector<vector<unsigned char> > &, size_t, size_t);
void paleta2(vector<vector<unsigned char> > &, size_t, size_t);
void pelota(vector<vector<unsigned char> > &, size_t, size_t);
void mostrar(const vector<vector<unsigned char> > &);
void medirConsola(size_t &, size_t &);
 
int main() {
    vector<vector<unsigned char> > campo;
    size_t iniJ1 = 10;
    size_t iniJ2 = 10;
    size_t finJ1 = 14;
    size_t finJ2 = 14;
    size_t pelX  = 42;
    size_t pelY  = 12;
    size_t maxH = 0;
    size_t maxV = 0;
 
    medirConsola(maxH, maxV);
    campo.resize(maxV, vector<unsigned char>(maxH - 1u, ' '));
 
    inicio(campo, iniJ1, finJ1, iniJ2, finJ2, pelX, pelY);
 
    return 0;
}
 
void inicio(vector<vector<unsigned char> > &campo,
            size_t iniJ1,
            size_t finJ1,
            size_t iniJ2,
            size_t finJ2,
            size_t pelX,
            size_t pelY) {
    orilla(campo);
    paleta1(campo, iniJ1, finJ1);
    paleta2(campo, iniJ2, finJ2);
    pelota(campo, pelX, pelY);
    mostrar(campo);
}
 
void orilla(vector<vector<unsigned char> > &campo) {
    const size_t maxV = campo.size();
    const size_t maxH = campo[0].size();
 
    for (size_t v = 0; v < maxV; ++v) {
        for (size_t h = 0; h < maxH; ++h) {
            if (v == 0 && h == 0) {
                campo[v][h] = ::EsqSupIzq;
            } else if (v == 0 && h == maxH - 1u) {
                campo[v][h] = ::EsqSupDer;
            } else if (v == maxV - 1u && h == 0) {
                campo[v][h] = ::EsqInfIzq;
            } else if (v == maxV - 1u && h == maxH - 1u) {
                campo[v][h] = ::EsqInfDer;
            } else if (v == 0 || v == maxV - 1u) {
                campo[v][h] = ::BarraHori;
            } else if (h == 0 || h == maxH - 1u) {
                campo[v][h] = ::BarraVert;
            } else {
                campo[v][h] = ::Espacio;
            }
        }
    }
}
 
void paleta1(vector<vector<unsigned char> > &campo, size_t ini, size_t fin) {
    for (size_t v = ini; v <= fin; ++v){
        for(size_t h = 2u; h <= 3u; ++h) {
            campo[v][h] = ::BarraRell;
        }
    }
}
 
void paleta2(vector<vector<unsigned char> > &campo, size_t ini, size_t fin) {
    const size_t maxH = campo[0].size();
 
    for(size_t v = ini; v <= fin; ++v) {
        for(size_t h = maxH - 4u; h <= maxH - 3u; ++h) {
            campo[v][h] = ::BarraRell;
        }
    }
}
 
void pelota(vector<vector<unsigned char> > &campo, size_t pelX, size_t pelY) {
    campo[pelY][pelX] = ::Pelota;
}
 
void mostrar(const vector<vector<unsigned char> > &campo) {
    for (const vector<unsigned char> &vec : campo) {
        for (const unsigned char &ch : vec) {
            cout << ch;
        }
        cout << '\n';
    }
}
 
void medirConsola(size_t &maxH, size_t &maxV) {
    CONSOLE_SCREEN_BUFFER_INFOEX csbi = { };
    csbi.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
 
    GetConsoleScreenBufferInfoEx(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    maxH = csbi.srWindow.Right - csbi.srWindow.Left + 1;
    maxV = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad