Daniel Lapa – Blog de Programação

Dezembro 11, 2008

Slot Machine – Abordagem em C++ segundo o paradigma ADT

Filed under: jogos c++, programação — daniellapa @ 8:52 pm

Nas últimas aulas de p.s.i estivemos a realizar uma ficha de trabalho na qual consistia criar um objecto segundo o paradigma de programação ADT.

Eu decidi criar uma slot machine.

Esta minha slot machine é um autêntico jogo de sorte, o qual consiste em acertar em vários tipos de combinações para ganhar créditos, que nos permitem continuar a jogar.

Uma Slot Machine real

A minha Slot Machine

Que operações se podem realizar com este objecto?

  • Gera um número aleatório para cada slot da slot machine.
  • Mostra a slot machine.
  • Verifica os créditos que temos e ao mesmo tempo verifica as combinações na mesma função.

O nome que vou definir à minha classe é Slot.

Classe :

Slot.h

#include <cstdlib>
#ifndef SLOT_H
#define SLOT_H
class Slot{
public:
	Slot();
	void PullTheLever();
	void ShowSlotMachine();
	void PlayTheGame();
	//prémios
	bool Jackpot();			// acertar em todas as slots
	bool DuasDiagonais();	// acertar em duas diagonais
	bool DuasVertical();	// acertar em duas verticais
	bool DuasHorizontal();	// acertar em duas horizontais
	bool HV();				// acertar numa horizontal e numa vertical
	bool DuasHV();			// acertar em duas verticais e em duas horizontais
	bool DHV();				// acertar numa diagonal numa vertical e numa horizontal
	bool Diagonal();		// acertar numa diagonal
	bool Vertical();		// acertar numa vertical
	bool Horizontal();		// acertar numa horizontal
private:
	int nslot[3][3];
};
#endif

Slot.cpp gera números aleatórios para cada slot, apresentando os valores obtidos através do desenho da slot machine e verifica os vários tipos de combinações possíveis:

Slot.cpp

#include <iostream>
#include "Slot.h"
using namespace std;
Slot::Slot(){
	PullTheLever();
}

void Slot::PullTheLever(){
	nslot[0][0] = rand()%9+1;
	nslot[0][1] = rand()%9+1;
	nslot[0][2] = rand()%9+1;
	nslot[1][0] = rand()%9+1;
	nslot[1][1] = rand()%9+1;
	nslot[1][2] = rand()%9+1;
	nslot[2][0] = rand()%9+1;
	nslot[2][1] = rand()%9+1;
	nslot[2][2] = rand()%9+1;
}

void Slot::ShowSlotMachine(){
	cout<<"*******************************"<<endl;
	cout<<"****     SLOT MACHINE      ****"<<endl;
	cout<<"*******************************"<<endl;
	cout<<"***     *****     *****     ***"<<endl;
	cout<<"***  "<< nslot&#91;0&#93;&#91;0&#93;<<"  *****  "<<nslot&#91;0&#93;&#91;1&#93;<<"  *****  "<<nslot&#91;0&#93;&#91;2&#93;<<"  ***"<<endl;
	cout<<"***     *****     *****     ***"<<endl;
	cout<<"*******************************"<<endl;
	cout<<"***     *****     *****     ***"<<endl;
	cout<<"***  "<<nslot&#91;1&#93;&#91;0&#93;<<"  *****  "<<nslot&#91;1&#93;&#91;1&#93;<<"  *****  "<<nslot&#91;1&#93;&#91;2&#93;<<"  ***"<<endl;
	cout<<"***     *****     *****     ***"<<endl;
	cout<<"*******************************"<<endl;
	cout<<"***     *****     *****     ***"<<endl;
	cout<<"***  "<<nslot&#91;2&#93;&#91;0&#93;<<"  *****  "<<nslot&#91;2&#93;&#91;1&#93;<<"  *****  "<<nslot&#91;2&#93;&#91;2&#93;<<"  ***"<<endl;
	cout<<"***     *****     *****     ***"<<endl;
	cout<<"*******************************"<<endl;
	cout<<"*******************************"<<endl;
};

bool Slot::Jackpot(){
	int padrao = nslot&#91;0&#93;&#91;0&#93;;
	if(padrao==nslot&#91;0&#93;&#91;0&#93; && padrao==nslot&#91;0&#93;&#91;1&#93; && padrao==nslot&#91;0&#93;&#91;2&#93; &&
	   padrao==nslot&#91;1&#93;&#91;0&#93; && padrao==nslot&#91;1&#93;&#91;1&#93; && padrao==nslot&#91;1&#93;&#91;2&#93; &&
	   padrao==nslot&#91;2&#93;&#91;0&#93; && padrao==nslot&#91;2&#93;&#91;1&#93; && padrao==nslot&#91;2&#93;&#91;2&#93;)
		return true;
	else
		return false;
}

bool Slot::DuasDiagonais(){
	int padrao = nslot&#91;0&#93;&#91;0&#93;;
	if(padrao==nslot&#91;0&#93;&#91;0&#93; && padrao==nslot&#91;1&#93;&#91;1&#93; && padrao==nslot&#91;2&#93;&#91;2&#93; &&
	   padrao==nslot&#91;0&#93;&#91;2&#93; && padrao==nslot&#91;1&#93;&#91;1&#93; && padrao==nslot&#91;2&#93;&#91;0&#93;)
		return true;
	else
		return false;
}

bool Slot::Vertical(){
	if((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) ||
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) ||
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))

		return true;
	else
		return false;
}

bool Slot::Horizontal(){
	if((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) ||
	   (nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) ||
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;))

		return true;
	else
		return false;
}

bool Slot::Diagonal(){
	if((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;) ||
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;))
		return true;
	else
		return false;
}

bool Slot::DHV(){
	if(((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
       (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
       (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
       (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
       (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
       (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
       (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;2&#93; == nslot&#91;2&#93;&#91;0&#93;)))

		return true;
	else
		return false;
}

bool Slot::HV(){
	if(((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;)) ||

       ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;)) ||

       ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;)) ||

       ((nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;)))

		return true;
	else
		return false;
}

bool Slot::DuasHorizontal(){
	if(((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;)) ||
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) ||
	   ((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)))
		return true;
	else
		return false;
}

bool Slot::DuasVertical(){
	if(((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;)) ||
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;)) ||
	   ((nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;)))
		return true;
	else
		return false;
}

bool Slot::DuasHV(){
	if((((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;))) ||

       (((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))) ||

       (((nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))) ||

	   (((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;))) ||

       (((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))) ||

	   (((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;2&#93;&#91;0&#93; == nslot&#91;2&#93;&#91;1&#93; && nslot&#91;2&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))) ||

	   (((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;))) ||

	   (((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;0&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;2&#93;&#91;0&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))) ||

	   (((nslot&#91;0&#93;&#91;0&#93; == nslot&#91;0&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;0&#93;==nslot&#91;0&#93;&#91;2&#93;) &&
	   (nslot&#91;1&#93;&#91;0&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;1&#93;&#91;0&#93;==nslot&#91;1&#93;&#91;2&#93;)) &&
	   ((nslot&#91;0&#93;&#91;1&#93; == nslot&#91;1&#93;&#91;1&#93; && nslot&#91;0&#93;&#91;1&#93;==nslot&#91;2&#93;&#91;1&#93;) &&
	   (nslot&#91;0&#93;&#91;2&#93; == nslot&#91;1&#93;&#91;2&#93; && nslot&#91;0&#93;&#91;2&#93;==nslot&#91;2&#93;&#91;2&#93;))))

		return true;
	else
		return false;
}

void menu(){
	cout<<endl<<"PREMIOS:"<<endl;
	cout<<"Jackpot 20 creditos"<<endl,
	cout<<"Duas horizontais e duas verticais 12 creditos"<<endl,
	cout<<"Duas horizontais 6 creditos"<<endl;
	cout<<"Duas verticais 6 creditos"<<endl;
	cout<<"Duas diagonais 6 creditos"<<endl;
	cout<<"Uma horizontal uma vertical e uma diagonal 6 creditos"<<endl;
	cout<<"Uma horizontal uma vertical 4 creditos"<<endl;
	cout<<"Uma diagonal 3 creditos"<<endl;
	cout<<"Uma horizontal 3 creditos"<<endl;
	cout<<"Uma verticalal 3 creditos"<<endl<<endl;
}

void Slot::PlayTheGame(){
	int credit=5;
	char op;
	menu();
	cout<<"Voce tem "<<credit<<" Creditos."<<endl;
	cout<<"Quer jogar Opção (y/n): ";cin>>op;

	if(op == 'y'){
	do{
		PullTheLever();
	    ShowSlotMachine();
	if(Jackpot()){
		cout << "Ganhou o Jackpot" << endl;
		credit=credit+20;
	}
	else 	if(DuasHV()){
				cout << "Ganhou o duas horrizontal e duas Vertical" << endl;
				credit=credit+12;
			}
			else	 if(DuasHorizontal()){
						cout << "Ganhou o DuasHorizontal" << endl;
						credit=credit+6;
					}
					 else	if(DuasVertical()){
								cout << "Ganhou o DuasVertical" << endl;
								credit=credit+6;
							}
							else	if(DuasDiagonais()){
										cout << "Ganhou o Duas Diagonais" << endl;
										credit=credit+6;
									}
									else	if(DHV()){
												cout << "Ganhou o uma horrizontal e uma Vertical e diagonal" << endl;
												credit=credit+6;
											}
											else	if(HV()){
														cout << "Ganhou o uma horrizontal e uma Vertical" << endl;
														credit=credit+4;
													}
													else	if(Diagonal()){
																cout << "Ganhou o Diagonal" << endl;
																credit=credit+3;
															}
															else	if(Horizontal()){
																		cout << "Ganhou o Horizontal" << endl;
																		credit=credit+3;
																	}
																	else	if(Vertical()){
																				cout << "Ganhou o Vertical" << endl;
																				credit=credit+3;
																			}
																			else
																				cout <<"Não ganhou !!!" <<endl;

		credit --;
		cout<<"Creditos: "<<credit<<endl;
		cout<<"Opção (y/n): ";cin>>op;
	}while((credit > 0) && (op == 'y'));
}
	if(op == 'n')
		cout<<"Ganhou "<<credit<<" Creditos."<<endl;

	if(credit==0)
		cout<<"Não tem mais creditos"<<endl;
}
&#91;/sourcecode&#93;
<p style="margin-bottom:0;">O programa principal que faz o chamamento a todas as funções do <strong>Slot.cpp</strong>.</p>
<p style="margin-bottom:0;"><strong>game.cpp</strong>:</p>


#include <iostream>
#include <cstdlib>
#include <ctime>
#include "Slot.h"
using namespace std;
int main(){
	srand(time(0));
	Slot Machine01;
	Machine01.PlayTheGame();
}

Aqui fica a minha slot machine, um dia mais tarde talvez a volte a criar com um melhor design.

Novembro 14, 2008

Módulo 08 – Conceitos Avançados de Programação

Filed under: programação — daniellapa @ 11:11 am

No inicio deste módulo começamos por realizar um trabalho de pares no qual consistia dizer o que é um Sistema Operativo, características de um Sistema Operativo, Sistemas operativos gráficos e “não gráficos”, elaborar uma lista de características dos sistemas operativos gráficos, identificando qual a vantagem associada, e o conceito de janela.

Aprendemos também a fazer a alocação dinâmica de memória em C++, onde aprendemos os comandos new e delete.

A declaração do apontador e a alocação da memória:


int *a = new int;

No fim libertar a memória que já não é utilizada:


delete a;


Outubro 20, 2008

Módulo 7 – Manipulação de ficheiros

Filed under: programação — daniellapa @ 10:11 am

Durante este módulo aprendemos a fazer a manipulação da ficheiros binários e de texto, elaboramos neste módulo cinco fichas de trabalho onde nos ajudou a aprender mais sobre como manipular ficheiros. Aprendemos a abrir e a fechar ficheiros em vários modos de acesso, aprendemos a inserir e a fazer a leitura de texto no ficheiro de carácter-a-carácter, aprendemos também a a escrever e a ler ficheiros de texto formatado enas últimas aulas aprendemos a escrever e a ler ficheiros binários.

Abrir ficheiro:

fp =fopen("meutexto.txt","r");

Fechar ficheiro:

fclose(fp);

Escrever um carácter num ficheiro de texto:

fputc('a',ficheiro);

Lê um caracter de um ficheiro de texto:

caracter=fgetc(ficheiro);

Escrever dados num ficheiro formatado:

fprintf(fp, "%d %s %.1f", a, b, c);

Ler dados de um ficheiro formatado:

fscanf(fp, "%d %s %f", a, b, c);

Escrever para um ficheiro binário:

fwrite(x,sizeof(int), 5, fp);

Ler um ficheiro binário:

fread(x,sizeof(int), 5, fp);

Módulo 7 – Manipulação de ficheiros Binários

Filed under: programação — daniellapa @ 9:49 am

Nas ultimas aulas do modulo aprendemos a manipular ficheiros binários.

Aprendemos a escrever e a ler ficheiros binários.

Escrever no ficheiro binário:

fwrite(x,sizeof(int), 5, fp);

Ler ficheiro binário:

fread(x,sizeof(int), 5, fp);

Neste exemplo escreve num fichiero binário:

#include
int main(int argc, char *argv[]){
FILE *fp;
int x[5], i;

fp = fopen(argv[1], “wb”);
for(i = 0; i < 5; i++){ printf("Inserir um numero na posicao %d do array: ",i); scanf("%d", &x[i]); } fwrite(x,sizeof(int), 5, fp); printf("Operacao efectuada\n"); fclose(fp); return 0; } [/sourcecode] Outro exemplo, este lê um ficheiro binário: [sourcecode language='css'] #include
int main(int argc, char *argv[]){
FILE *fp;
int x[5], i;

fp = fopen(argv[1], “rb”);
if(fp == NULL){
printf(“O ficheiro nao e válido\n”);
return 1;
}
fread(x, sizeof(int), 5, fp);
for(i = 0; i < 5; i++){ printf("Array[%d] = %d\n",i, x[i]); } fclose(fp); return 0; } [/sourcecode]

Outubro 17, 2008

Modulo 7 – Escrever e ler ficheiros de texto formatado

Filed under: programação — daniellapa @ 9:52 am

Nas ultimas aulas aprendemos a escrever e a ler ficheiros de texto formatado.

Escrever dados formatados:

fprintf(fp, "%d %s %.1f", a, b, c);

Ler dados formatados:

fscanf(fp, "%d %s %f", a, b, c);

Este exemplo escreve dados no ficheiro num formato indicado:


#include <stdio.h>
int main(int argc, char *argv[]){

	FILE *fp;
	int a=11;
	char b[30]="texto";
	float c=12.50;

	fp = fopen(argv[1], "w");
    /*escreve dados no ficheiro num formato indicado*/
	fprintf(fp, "%d %s %.1f", a, b, c);
	fclose(fp);

	return 0;
}

Este exemplo lê dados do ficheiro no formato indicado:


#include <stdio.h>
int main(int argc, char *argv[]){

	FILE *fp;
	int a;
	char b[30];
	float c;

	if((fp = fopen(argv[1], "r"))!=NULL){
        /*lê dados do ficheiro no formato indicado*/
		fscanf(fp, "%d %s %f", &a, b, &c);
		printf("a = %d\n", a);
		printf("b = %s\n", b);
		printf("c = %.1f\n", c);
		fclose(fp);
	}
	else
		printf("O ficheiro especificado não existe!\n");
	return 0;
}

Outubro 7, 2008

Módulo 7 – Manipulação de ficheiros de texto

Filed under: programação — daniellapa @ 9:50 am

este módulo de PSI estamos aprendemos a fazer manipulação de ficheiros de texto.

Durante as aulas fomos aprendendo varias maneiras de manipulação de ficheiros através de vários exercícios e fichas de trabalho. Ao longo das primeiras aulas aprendemos a abrir e fechar ficheiros em vários modos de acesso, depois inserimos e fizemos a leitura de texto no ficheiro de carácter-a-carácter

Exemplo:

#include<stdio.h>
int main(){
 FILE *fp;      //apontador para o ficheiro
 /*Abrir ficheiro*/
 fp =fopen("meutexto.txt","r");
 /*Fechar ficheiro*/
 fclose(fp);

 return 0;
}

Aprendemos também a escrever e a ler um carácter de um ficheiro.

Ler carácter:

caracter=fgetc(ficheiro);

Escrever carácter:

fputc('a',ficheiro);

Exemplo de um programa que lê os carácter de um ficheiro e escreve para outro ficheiro

#include<stdio.h>
int main(int argc, char *argv[]){
	FILE *fa, *fb;
	char caracter;

	fa=fopen(textoa,"r");
	fb=fopen(textob,"w");	

	/*Le caracater a caracter*/
	while((caracter=fgetc(fa))!=EOF){
		fputc(caracter,fb); //escreve os caracter no ficheiro

	fclose(fa);
	fclose(fb);

	return 0;
}

Outro exemplo, este programa verifica se um ficheiro existe:


#include <stdio.h>
int main(int argc, char *argv[]){
	FILE *fp;
	fp = fopen(argv[1],"r");
	if (fp==NULL)
		printf("ficheiro não existe\n");
	else{
		printf("Ficheiro já existe\n");
		fclose(fp);
	}
	return 0;
}

Nas proximas aulas iremos aprender a manipular ficheiros binários.

Setembro 19, 2008

PSI

Filed under: introdução — daniellapa @ 11:33 am

Este blog será o meu novo blog de programação, onde continuarei a colocar os meus vários trabalhos de programação, pensamentos e links de interesse sobre programação.

Maio 20, 2008

Jogo do galo – C++

Filed under: jogos c++, programação — daniellapa @ 10:11 am

Poucas aulas atrás o professor de programação lançou-nos o desafio de fazer o jogo do galo, eu achei um pouco complicado de fazer.

#include
#include
#include
using namespace std;
typedef struct{
char pos[3][3];
}GALO;

void limpar_tabuleiro(GALO *g){
int l,c;
for(l=0;l<3;l++) for(c=0;c<3;c++) (*g).pos[l][c]=' '; } void mostrar(GALO g){ cout<<"+---+---+---+"<o)
return ‘o’;
else
return ‘x’;
}
void jogar(GALO *p ,int posicao,char caracter){
switch(posicao){
case 1:(*p).pos[0][0]=caracter;break;
case 2:(*p).pos[0][1]=caracter;break;
case 3:(*p).pos[0][2]=caracter;break;
case 4:(*p).pos[1][0]=caracter;break;
case 5:(*p).pos[1][1]=caracter;break;
case 6:(*p).pos[1][2]=caracter;break;
case 7:(*p).pos[2][0]=caracter;break;
case 8:(*p).pos[2][1]=caracter;break;
case 9:(*p).pos[2][2]=caracter;break;
}
}
int main(){
GALO galo;
char vez;
int posicao;
limpar_tabuleiro(&galo);

vez=’x’;
do{
cout<<"Vai jogar o "<>posicao;
jogar(&galo,posicao,vez);
if(vez==’x’)
vez=’o’;
else vez=’x’;
}while(!vitoriax(galo)&&!vitoriao(galo)&&!empateox(galo));
mostrar(galo);
if(empateox(galo))
cout<<"O jogo terminou com um empate técnico!\n"; else if(vitoriax(galo)) cout<<"Vitória do x\n"; else cout<<"Vitória do o\n"; return 0; } [/sourcecode] As posições que o programa pede vão de 1 a 9 sendo 1, 2 ,3 da 1º linha, 4, 5, 6 2º linha, 7, 8, 9 da 3ºlinha.

O que são apontadores

Filed under: programação — daniellapa @ 9:39 am

Hoje na aula de programação aprendi o que são apontadores.
Eu acho que os apontadores são um pouco complicados ao inicio de compreender, mas depois de testarmos começamos a compreender melhor para que servem.

Aqui está um exemplo de um programa sem apontadores:

#include
using namespace std;
int main(){
int a=1,b=2;

cout<<"A = "<

  • & significa “endereço de”.
  • * significa “aponta para”, ou se quisermos, “conteúdo do endereço apontado por”.
  • Maio 19, 2008

    “HELLO WORLD”

    Filed under: curiosidades, programação — daniellapa @ 9:46 am

    Aqui temos um pequeno video do famoso programa “HELLO WORLD”.

    Este é um bom exemplo de um programa para quem ainda esta a começar a programar.

    Older Posts »

    Site no WordPress.com.