Frase de la semana

El blog no debe ser un recurso vano para el ego, tiene que servir para desahogarte y para crear cosas, ya sean del gusto general o no.

‡ Alexander Strauffon ‡

Acerca de este Blog

algunos derechos reservados
Creative Commons License

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

esquiva los baches!

0 opiniones

hoy gente, les vengo a ofrecer un juego retro que muchos han jugado,

hoy les traigo una vercion renobada ambientadaen las carreteras libres de guadalajara.

image

image

este juego retro inspirado en los primeros juegos de computadora no tiene mas requerimientos que  monitor,teclado y windows xp con .net  framework 3 si no me falla la memoria 

Se los traigo a ustedes hoy por solo 5 u$d y lo9 podran utilisr hasta en 7 computadoras diferentes! eso es menos de un dolar por computadora, pero ademas optendran actualizaciones gratuitas hata la vercion 1.0 la cual traera consigo ademas de mejores graficas y mas niveles de dificultad, algunas sorpresilas mas!

 

descarga:

ver 0.0.0.1

dale me gusta! para enterarte de las novedades

Tutorial : letras que rebotan

0 opiniones

Consideraciones:


para este pequeño tutorial considerare que usted sabe lo básico acerca de programación en c++ así como uso básico de objetos y usa un sistema Windows (lo se es malo pero aun no he portado todo el código a *nix)


 


paso 1:


primero haremos un objeto para la letra que rebotara y para esto necesitamos abstraerlo, es decir sacar sus propiedades y métodos mas importantes:


propiedades:

  • Carácter – aquí guardaremos la letra que rebotara por la pantalla
  • x – la coordenada en “X” que tendrá nuestro carácter
  • y – la coordenada en “Y” de nuestro carácter
  • movimiento en x – la dirección en la que se moverá nuestro carácter en el eje x
  • movimiento en y – la dirección en la que  se moverá nuestro carácter en el eje y

métodos:

aquí moveremos nuestro carácter en la pantalla, para hacerlo mas fácil lo dividiremos en tres partes


  • preparar movimiento – asignarlas direcciones de movimiento
  • obtener coordenadas  obtener las nuevas coordenadas del carácter
  • mover – finalmente mover el objeto

ahora que hemos finalizado la abstracción del objeto podemos escribir su código.


paso 2:


primero haremos la case y después definiremos sus métodos


Caracter.h.



class Caracter

{


public:


    Caracter(char letra ,int x, int y);//constructor


    ~Caracter(void);


    void mover();


private:


    void makeXY(); //otener as nuevas coordenadas del objeto


    void peparaMov();//no exceder 80 * 25 (TAMAÑO DE LA CONSOLA)


    int x;


    int y;


    bool movx;//true derecha; 
    bool movy;//true abajo;


    char letra;


};


básicamente lo que hemos echo hasta ahora es pasar al código nuestra abstracción , ahora lo que haremos será definir los métodos de nuestra clase:


Caracter.cpp :


#include "StdAfx.h"

#include "Caracter.h"


#include "posicion.h"


#include <iostream>


using namespace std;


Caracter::Caracter(char letra ,int x, int y)

{


    this->letra = letra;


    if(x<0) x=0; else if(x>79) x=79;//s el x pasado al constructor esta fuera de limites ponerlo en el limite mas cercano


    this->x = x-1;//poner un carácter atrás para avanzar y ponerlo en el lugar indicado por el usuario;


    if(y<0) y=0; else if(y>24) y=24;//si el x pasado al constructor esta fuera de limites ponerlo en el limite mas cercano



    this->y = y-1;

    this->movx = true;


    this->movy = true;


}


Caracter::~Caracter(void)//eliminar todos los datos

{


    this->letra = NULL;


    this->x = NULL;


    this->y = NULL;


    this->movx = NULL;


    this->movy = NULL;


    this->rastro = NULL;


}


void Caracter::mover()

{


    //eliminar el carácter antes de moverlo


     gotoxy(this->x,this->y);


     cout<<' ';


    
    this->makeXY();


    gotoxy(this->x,this->y);


    cout<<this->letra;


}


void Caracter::makeXY()

{


    this->peparaMov();


    if(this->movx) this->x++; else this->x--;


    if(this->movy) this->y++; else this->y--;


}


void Caracter::peparaMov()//si esta e el limite cambiamos la dirección del movimiento


{


    if(this->x==0) this->movx = true;


    else if(this->x==79) this->movx = false;


    if(this->y==0) this->movy = true;


    else if(this->y==24) this->movy = false;


}


ahora como gotoxy es de borland tenemos un problema para so usaremos este código que realiza lo mismo:


posicion.h :

#include <stdio.h>

#include <conio.h>


#include <windows.h>


void gotoxy( int column, int line )

  {


  COORD coord;


  coord.X = column;


  coord.Y = line;


  SetConsoleCursorPosition(


    GetStdHandle( STD_OUTPUT_HANDLE ),


    coord


    );


  }


int wherex()

  {


  CONSOLE_SCREEN_BUFFER_INFO csbi;


  COORD                      result;


  if (!GetConsoleScreenBufferInfo(


         GetStdHandle( STD_OUTPUT_HANDLE ),


         &csbi


         ))


    return -1;


  return result.X;


  }


int wherey()

  {


  CONSOLE_SCREEN_BUFFER_INFO csbi;


  COORD                      result;


  if (!GetConsoleScreenBufferInfo(


         GetStdHandle( STD_OUTPUT_HANDLE ),


         &csbi


         ))


    return -1;


  return result.Y;


  }


bien ahora que hemos hecho nuestro objeto, ahora lo implementaremos  en nuestro programa, pero además no será un solo carácter el que rebotara sino 3!

#include "stdafx.h"
#include "Caracter.h"
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

    Caracter *a,*b,*c; //usamos punteros a los objetos para manejarlo mas fácilmente
    char aa,bb,cc,stop;
    int ax,ay,bx,by,cx,cy;

    cout<<"USO: CARACTER X Y, termine el programa pulsando cualquier tecla;"<<endl;//pedimos los datos de los tres caracteres y los inicializamos
    cin>>aa>>ax>>ay;
    cin>>bb>>bx>>by;
    cin>>cc>>cx>>cy;
    a = new Caracter(aa,ax,ay);
    b = new Caracter(bb,bx,by);
    c = new Caracter(cc,cx,cy);

    system(“cls”) //limpiar pantalla

    while(!_kbhit())
    {
        a->mover();//mover los objetos uno por uno
        b->mover();
        c->mover();
        Sleep(50);//hacer tiempo

    }
    delete a;//como creamos punteros, debemos de liberar la memoria donde se alojaron
    delete b;
    delete c;

    return 0;
}

y listo por esta semana es todo cualquier duda la pueden dejar en los comentarios o enviarla por mail a programacion@ka-plum.co.cc

no olviden darle me gusta! en facebook

Blog Widget by LinkWithin