proyecto - juego solitario

23
UNIVERSIDAD AUTÓNOMA GABRIEL RENE MORENO FACULTAD: CS. EXACTAS Y TECNOLOGÍA CARRERA: INFORMÁTICA “PROYECTO PROG. II” “JUEGO SOLITARIO” INTEGRANTES: ALAN JHONNY HINOJOSA A. 200422121 ( SA ) ADOLFO MIGUEL CLAVIJO A. 200431961 ( SB ) RONALD CHAVEZ 200309757 ( SB ) MATERIA: INF 210 SA-SB “PROGRAMACIÓN II” DOCENTE: ING. JUAN CARLOS A. CONTRERAS V. SANTA CRUZ, DICIEMBRE,2005

Upload: rogermartinezd

Post on 11-Nov-2015

35 views

Category:

Documents


5 download

DESCRIPTION

c#

TRANSCRIPT

UNIVERSIDAD AUTNOMA

UNIVERSIDAD AUTNOMA

GABRIEL RENE MORENO

FACULTAD: CS. EXACTAS Y TECNOLOGA

CARRERA: INFORMTICA

PROYECTO PROG. II

JUEGO SOLITARIO

INTEGRANTES:

ALAN JHONNY HINOJOSA A. 200422121 ( SA )

ADOLFO MIGUEL CLAVIJO A. 200431961 ( SB )

RONALD CHAVEZ 200309757 ( SB )

MATERIA:

INF 210 SA-SB PROGRAMACIN II

DOCENTE:

ING. JUAN CARLOS A. CONTRERAS V.

SANTA CRUZ, DICIEMBRE,2005

DIAGRAMA DE CLASESJUEGO SOLITARIO

DESCRIPCIN DEL PROBLEMA

JUEGO SOLITARIO

Esta versin del juego del Solitario consiste en eliminar las cartas acumuladas que forman una pirmide de 28 cartas acomodadas de tal manera que quedan tres cartas al descubierto con dos cartas debajo de cada una y a la ves las cartas debajo de estas dos forman una hilera de cartas la cual tambin forma otra hilera aun mas larga, para eliminar el mazo de cartas se nos permite utilizar una carta que esa al descubierto, comparando esta carta con las cartas descubiertas del mazo. La comparacin consiste en buscar un numero mayor o menor al de la carta que esta en la mesa sin importa el smbolo o el color, en un caso de no existir cartas con la cual eliminar la de la mesa, esta se puede cambiar por otra que es otorgada Randomicamente con un nmero limitado de intentos, en caso de sobrepasar el numero de intentos de cambio de cartas antes de eliminar todas las cartas el juego se termina, si el mazo es eliminado antes de el nmero de intentos se inicia otro juego nuevamente hasta perder o se decida terminar con el juego.

CDIGO FUENTEJUEGO SOLITARIO

* Llamadas.cpp//---------------------------------------------------------------------------

#include

#pragma hdrstop

#include "Llamadas.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner) {

aux= new Juego(150,50,1024,768,Canvas);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender) {

DoubleBuffered = 1 == 1;

bb = 1 == 2;

Timer1->Enabled = bb;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender) {

if ( bb )

aux->muestra( );

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y) {

if ( bb ) {

aux->click( X, Y );

aux->nuevopartida( );

}

Timer1->Enabled = bb;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender) {

aux->findejuego( bb );

aux->nuevopartida( );

Timer1->Enabled = bb;

FormPaint( Sender );

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Salir1Click(TObject *Sender) {

Application->Terminate( );

}

//---------------------------------------------------------------------------

void __fastcall TForm1::NuevoJuegoClick(TObject *Sender) {

aux->repartir( 150, 50 );

bb = 1 == 1;

}

//---------------------------------------------------------------------------

* Llamadas.h

//---------------------------------------------------------------------------

#ifndef LlamadasH

#define LlamadasH

//---------------------------------------------------------------------------

#include

#include

#include

#include

#include "Cartas.h"

#include

#include

#include

#include

#include ;

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published:// IDE-managed Components

TTimer *Timer1;

TMainMenu *MainMenu;

TMenuItem *Men1;

TMenuItem *NuevoJuego;

TMenuItem *N1;

TMenuItem *Salir1;

void __fastcall FormCreate(TObject *Sender);

void __fastcall FormPaint(TObject *Sender);

void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y);

void __fastcall Timer1Timer(TObject *Sender);

void __fastcall Salir1Click(TObject *Sender);

void __fastcall NuevoJuegoClick(TObject *Sender);

private:// User declarations

Juego *aux;

bool bb;

public:

// User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

* Cartas.h

//---------------------------------------------------------------------------

#ifndef CartasH

#define CartasH

#include

#include

#include

//---------------------------------------------------------------------------

struct ejes {

int x;

int y;

};

struct Carta {

ejes pos;

byte valor;

bool estado, visible;

char simbolo;

};

struct cartas {

Carta Cartas[ 52 ];

};

int ancho = 82;

int alto = 102;

///------------------------------- Clase Carta ------------------------------///

class TCarta {

private:

ejes encima[52]; //x=Izq. y=Der.

cartas carta;

cartas carta1;

Carta c;

int Carriba,Cabajo,dim1;

public:

TCarta();

void SetCartas(cartas &v,int pos,Carta car);

Carta GetCarta(cartas car, int pos);

cartas GetCartas();

cartas GetCartas1();

void SetCartas1( Carta car);

void SetValor(cartas & car,int pos,int valor);

byte GetValor(cartas &car,int pos);

void SetEstado(cartas & car,int pos,bool est);

bool GetEstado(cartas &car,int pos);

void SetVisible(cartas &car,int pos,bool vis);

bool GetVisible(cartas &car,int pos);

void SetSimbolo(cartas &car,int pos ,char sim);

char GetSimbolo(cartas &car,int pos);

void SetPosCarta(cartas &car,int pos,int x, int y);

ejes GetPosCarta(cartas &car,int pos);

int GetCarriba();

int GetCabajo();

int GetDim1();//dimension del vector encima;

void PonerPosencima();

void EliminaPosencima(int pos);

int BusquedaDecarta(int x, int y );

void BajarCarta(int pos);

void PonerXY(int x ,int y);

void CambioDeEstadocarta();

void CargarCartas();

void Barajar();

void EliminaCarta(bool cual,int pos);

bool CartaAbajar();

bool VisiblesTodas();

};

///------------------------------ Clase Dibujo ------------------------------///

class TDibujo {

private:

TCanvas *camba;

Graphics::TBitmap * imagen;

Graphics::TBitmap * imagen1;

public:

TDibujo(int ancho,int alto,TColor color,TCanvas * ca);

~TDibujo();

pintacarta(int x,int y,bool est,bool vis,char sim,byte valor,int ancho,int alto);

pedirimagen(String nom);

pinta(int x, int y,int ancho,int alto);

limpiar(int x,int y, int ancho, int alto);

pintatexto(int x, int y,String texto);

Draw();

int getWimg();

int getHimg();

void ponercolor(TColor ca);

};

///------------------------------- Clase Juego ------------------------------///

class Juego {

private:

TDibujo *pinte;

TCarta * sol;

int X;

int Y;

bool sw;

int ra;

public:

Juego(int X1,int Y1,int ancho,int alto,TCanvas *c);

~Juego();

void muestra();

void repartir(int x,int y);

void click(int x , int y);

void findejuego(bool &sw);

void nuevopartida();

};

#endif

* Cartas.cpp

//---------------------------------------------------------------------------

#include

#pragma hdrstop

#include "Cartas.h"

///------------------------------- CLASE CARTA ------------------------------///

TCarta:: TCarta() {

CargarCartas();

PonerPosencima();

}

void TCarta:: SetCartas(cartas & v,int pos,Carta car) {

v.Cartas[pos]=car;

}

Carta TCarta::GetCarta(cartas car, int pos) {

return car.Cartas[pos];

}

cartas TCarta:: GetCartas() {

return carta;

}

void TCarta:: SetCartas1( Carta car) {

dim1++;

carta1.Cartas[dim1]=car;

}

cartas TCarta::GetCartas1(){

return carta1;

}

void TCarta::SetValor(cartas & car,int pos,int valor) {

car.Cartas[pos].valor=valor;

}

byte TCarta::GetValor(cartas &car,int pos) {

return car.Cartas[pos].valor;

}

void TCarta::SetEstado(cartas & car,int pos,bool est) {

car.Cartas[pos].estado=est;

}

bool TCarta::GetEstado(cartas &car,int pos) {

return car.Cartas[pos].estado;

}

void TCarta::SetVisible(cartas &car,int pos,bool vis) {

car.Cartas[pos].visible=vis;

}

bool TCarta::GetVisible(cartas &car,int pos) {

return car.Cartas[pos].visible;

}

void TCarta::SetSimbolo(cartas &car,int pos ,char sim) {

car.Cartas[pos].simbolo=sim;

}

char TCarta::GetSimbolo(cartas &car,int pos) {

return car.Cartas[pos].simbolo;

}

void TCarta::SetPosCarta(cartas &car,int pos,int x, int y ) {

car.Cartas[pos].pos.x=x;

car.Cartas[pos].pos.y=y;

}

ejes TCarta::GetPosCarta(cartas &car,int pos) {

return car.Cartas[pos].pos;

}

int TCarta::GetCarriba() {

return Carriba;

}

int TCarta::GetCabajo() {

return Cabajo;

}

int TCarta::GetDim1() {

return dim1;

}

void TCarta::PonerPosencima() {

int ce=0;

for (int i=0; iTextOutA(x,y,texto);

}

TDibujo:: limpiar(int x,int y, int ancho, int alto) {

imagen->Canvas->Rectangle(x,y,x+ancho,y+alto);

}

TDibujo::Draw(){

camba->Draw(0,0,imagen);

}

int TDibujo:: getWimg() {

return imagen->Width;

}

int TDibujo:: getHimg() {

return imagen->Height;

}

void TDibujo:: ponercolor(TColor ca) {

Word a=random(9999999);

Word r=random(655855);

Word v=random(526);

imagen->Canvas->Brush->Color= RGB(a-10,r-102,v+104);

imagen->Canvas->Pen->Color=RGB(a-10,r-102,v+104);

imagen->Canvas->Font->Color=RGB(a+10,r+102,v-300);

}

//------------------------------- CLASE JUEGO -------------------------------///

Juego::Juego(int X1,int Y1,int ancho ,int alto,TCanvas *c){

pinte=new TDibujo(ancho,alto,clRed,c);

sol=new TCarta();

X=X1;

Y=Y1;

ra=1;

}

Juego::~Juego() {

delete pinte;

delete sol;

}

void Juego:: repartir(int x,int y) {

sol->Barajar();

sol->PonerXY(X,Y);

sol->SetCartas1(sol->GetCarta(sol->GetCartas(),sol->GetCabajo()));

sol->EliminaCarta(false,1);

sol->CambioDeEstadocarta();

ejes p,p2;

int j,j1;

pinte->limpiar(0,0,1024,768);

pinte ->pintatexto(X+50,Y+10,"NMERO: "+IntToStr(ra));

pinte->Draw();

Sleep(600);

pinte->limpiar(0,0,1024,768);

for (int i=0 ;iGetCarriba();i++)

{

p=sol->GetPosCarta(sol->GetCartas(),i);

j=j1=0;

while (((jGetCartas(),i),sol->GetValor(sol->GetCartas(),i),ancho+1,alto+1);

pinte->pintacarta(j,j1,sol->GetEstado(sol->GetCartas(),i),true,sol->GetSimbolo(sol->GetCartas(),i),sol->GetValor(sol->GetCartas(),i),ancho+1,alto+1);

pinte->Draw();

}

while (j1>=p.y )

{ j1=j1-15;

pinte->limpiar(p.x,j1,ancho+j+2,alto+20);

pinte->pintacarta(p.x,j1,sol->GetEstado(sol->GetCartas(),i),true,sol->GetSimbolo(sol->GetCartas(),i),sol->GetValor(sol->GetCartas(),i),ancho+1,alto+1);

j=0;

pinte->Draw();

}

}

pinte->pintacarta(X+300,Y+350,false,true,sol->GetSimbolo(sol->GetCartas(),0),sol->GetValor(sol->GetCartas(),0),83,103);

muestra();

}

void Juego:: muestra() {

ejes p2;

pinte->limpiar(0,0,1024,Y+350);

pinte->pintatexto(X+310,Y+280,IntToStr(52-sol->GetCabajo()));

for (int j2=0;j2GetCarriba();j2++)

{

p2=sol->GetPosCarta(sol->GetCartas(),j2);

if (sol->GetVisible(sol->GetCartas(),j2))

pinte->pintacarta(p2.x,p2.y,sol->GetEstado(sol->GetCartas(),j2),true,sol->GetSimbolo(sol->GetCartas(),j2),sol->GetValor(sol->GetCartas(),j2),ancho+1,alto+1);

}

pinte->pintacarta(X+400,Y+350,true,true,sol->GetSimbolo(sol->GetCartas1(),sol->GetDim1()),sol->GetValor(sol->GetCartas1(),sol->GetDim1()),83,103);

pinte->Draw();

}

void Juego:: click(int x , int y) {

int pos=sol->BusquedaDecarta(x,y);

if ((pos>=0))

{

sol->BajarCarta(pos);

sol->CambioDeEstadocarta();

}

if (sol->GetCabajo()=X+300)&&(y>=Y+350)&&(Y+453>=y)&&(X+383>=x))

{

sol->SetCartas1(sol->GetCarta(sol->GetCartas(),sol->GetCabajo()));

sol->EliminaCarta(false,0);

}

muestra();

}

void Juego:: findejuego(bool &sw) {

if ((sol->GetCabajo()>=52)&&(!sol->CartaAbajar()))

{ ra=1;

sw=false;

pinte->ponercolor(clRed);

pinte->pintatexto(X+200,Y+200," F I N ");

pinte->Draw();

Sleep(600);

pinte->limpiar(0,0,1024,768);

}

}

void Juego:: nuevopartida() {

if ((sol->GetDim1()>=52)||(!sol->VisiblesTodas())) {

ra++;

pinte->ponercolor(clRed);

repartir(X,Y);

}

}