Click here to Skip to main content
Licence GPL3
First Posted 25 Jan 2003
Views 95,926
Downloads 2,122
Bookmarked 31 times

Italian game card Seven and Half ver. 2.0

By | 26 Apr 2012 | Article
This is an Italian game card, programmed with MFC and C++ STL, enjoy!

Sample Image - Italiangamecard.gif

Introduction

This article presents a simple game card, programmed with MFC. For graphics and the user feedback, and at a lower level, I used the STL of C++ to manage the classes for the deck, the players and the game. The same low level structure, could be reused for a different future game (Poker? Bridge...is too difficult I guess!). I used a dialog based application in the MFC wizard. I've updated the game to version 2.0, because I added some other features. The game is a freeware and full version with all the source code in C++ and MFC.

Description

The Italian game card "Sette e mezzo" or "Seven and half" is a typical Christmas game. You have to bet your "virtual" dollars and then take a card from the deck until you feel that your points are enough and under 7 and half that is the maximum allowed point. Then is the PC's turn to play and it will take cards until it will arrive over your points or until it will loose, because over 7 and half! The rules are explained in the game, with the help dialog box. Your first card is hidden, so the PC can only count the points by the other cards and you can also use only one card to try to beat the PC that will "learn" from your style of playing!

Classes

I used 2 classes for the MFC dialog boxes and classes for the lower level C++/STL engine. CDeck for the deck of cards, CGameCard for the 40 cards, CPlayer for the 2 players: you and your PC, and GameNapoletano for the whole game.

Some code

I used a function to load .jpg and .bmp from files and to render them to the DC:

// This function loads a file into an IStream.
void myUtilities::LoadPictureFile(LPCTSTR szFile, LPPICTURE &gpPic)

And this function uses the OLE technology.

To map card's picture with the key code that identifies the card, I used std::map. For each card, I built a key code using its value and its family (there are 40 cards, 10 cards and 4 families).

typedef std::map<int, LPPICTURE, std::less<int> > PicCardType;

So, in the OnPaint function of the main dialog box, I show all the current cards in the game, using a std::vector, where I pushed the pointer to the picture card:

std::vector<LPPICTURE>

Before that, every random card taken from the deck has to be found in the map already built, by its key code.

   // take the idCard from the current card
   int idCard = card.GetIdCard();
   // with the idCard we can find the iterator to the picture by the map
   m_itMyCard = m_CardMap.find(idCard);

When the 40 cards are all gone, I have to reshuffle the deck, but I cannot use the card still on the table! So, I have to use another deck where I copied all the cards used and reshuffle that one...

New Features for the Version 2.0

I added some features suggested to me by many players: first of all, the game needed to follow the official rules of the game, so I added the jolly card that is the king of gold, and I added to the first hidden card to the player, so the PC now cannot count all the points and it is more difficult to beat us! There are sounds for every action and it is possible to disable them. Bets are only allowed after we got the hidden card.

Conclusion

I wrote this code for hobby. Next step will be a poker card game, hopefully reusing the same structure and inheriting from the same classes... Feel free to suggest to me your code, and your opinion is always appreciated. Tell me where I have to change, where the code really sucks and what you would do instead.

Thank you.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)

About the Author

Maurus

Software Developer (Senior)

Italy Italy

Member

Follow on Twitter Follow on Twitter
I am born in 1965 in Ascoli Piceno (Italy).
 
My email is maurus@rocketmail.com
 
HIGHER EDUCATION:
Degree in Computer Science with a mark of 95/110,
University of Pisa in July 1992.
KNOWLEDGE OF FOREIGN LANGUAGES:
Mother tongue Italian.
Very good knowledge of both English and French.
 
COMPUTER KNOWLEDGE:
Operating systems:
Windows, Windows CE.
real time systems on micro.
 
Programming languages:
C, C++, VisualC++, Pascal, Basic, Coral, Assembly, Win32.
Libraries:
Qt, STL, Roguewave, OpenGL, MFC.
Tools
Cycle V, Design Patterns
Frameworks:
Visual Studio, DevC++, Qt Creator, Codewarrior
Micro: Mitsubishi, Texas DSP, Intel.
 
WORKING EXPERIENCES:
From april 1994 to march 2000 I worked in Gem Elettronica (http://www.gemrad.com) in San Benedetto del Tronto (Italy), a company that produce real time systems, naval radars, geographical position system (G.P.S.), cartographical consoles in civil and military environment (Custom Officers, Italian Militar Navy, Carabinieri).
I developed software in C/C++ inside a team work environment for international naval radar sites. I cooperated with other programmers of the Lockheed Martin Company, the Rohde & Schwarze and the Alenia Marconi Systems.
I mainly worked with real time systems, localisation radio and GPS systems.
 
From march 2000 to july 2001 I worked in Ericsson Cables (http://www.ericsson.com/networktechnologies) in Sundbyberg (Sweden).
I developed software for fusion splicers in a Windows CE environment in C++, Win32, MFC.
Video analyses, micro motor motion and micro cameras.
 
From August 2001 to February 2003
I worked in France, Paris developing in C++ under Windows, for a French company that produced software to share informations.
 
From March 2003
I am actually working in my first company Gem Elettronica.
I also develop Vessel Traffic Systems and Laser Gyrosteps interfaces.
My current job is to manage projects with naval and river radars.
 
We used Qt, Win32, MFC, C++, STL, DLL, OpenGL

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
General7.5 ROTFL Pinmember aphazel 死神3:11 12 Jan '10  
GeneralNice article! Pinmemberucc80122:51 11 May '05  
GeneralVery cultural article PinmemberAnthony_Yio17:12 1 Dec '03  
GeneralRe: Very cultural article PinmemberMaurus2:42 15 Mar '04  
GeneralC++ MFC program help arrtillery PinsussAnonymous11:17 16 Feb '03  
GeneralRe: C++ MFC program help arrtillery PinmemberMaurus11:42 16 Feb '03  
General7 e mezzo ? NOO ! 7 y media !!! PinmemberBraulio Díez21:10 11 Feb '03  
GeneralRe: 7 e mezzo ? NOO ! 7 y media !!! PinmemberMaurus22:22 11 Feb '03  
GeneralDon´t you... PinmemberMarcosEdu23:11 9 Feb '03  
GeneralRe: Don´t you... PinmemberMaurus23:38 9 Feb '03  
GeneralRe: Don´t you... PinmemberMarcosEdu7:29 10 Feb '03  
GeneralRe: Don´t you... PinmemberMaurus10:01 10 Feb '03  
GeneralSCOPA!!! PinmemberRoman Nurik7:39 27 Jan '03  
GeneralRe: SCOPA!!! PinmemberMaurus8:33 27 Jan '03  
GeneralFeel free to add a comment PinmemberMaurus9:27 26 Jan '03  
GeneralRe: Feel free to add a comment PinsussGoran Mitrovic13:22 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberMaurus22:29 26 Jan '03  
GeneralRe: Feel free to add a comment PinsussAnonymous22:05 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberMaurus22:34 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberChopper23:09 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberMaurus23:14 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberChopper23:23 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberMaurus23:28 26 Jan '03  
GeneralRe: Feel free to add a comment PinmemberVernero Cifagni6:03 27 Jan '03  
GeneralRe: Feel free to add a comment PinmemberChopper6:10 27 Jan '03  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 26 Apr 2012
Article Copyright 2003 by Maurus
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid