//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;
}
}
#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;
}