├── icons ├── heart.png ├── muted.png ├── deck_h.png ├── deck_n.png ├── deck_s.png ├── up-icon.png ├── connected.png ├── heart-grey.png ├── left-icon.png ├── right-icon.png ├── table-icon.png ├── computer-icon.png ├── disconnected.png ├── no_pass-icon.png ├── Paomedia-Small-N-Flat-Sign-up.svg ├── Paomedia-Small-N-Flat-Sign-left.svg ├── Paomedia-Small-N-Flat-Sign-add.svg ├── Paomedia-Small-N-Flat-Sign-check.svg └── persongeneric.svg ├── backgrounds ├── leaves.jpg ├── marble.jpg ├── eso1723a.jpg ├── Wadi_rum_desert.jpg ├── __Palm___Beach._Port_Douglas._-_panoramio.jpg ├── 380441109-2ed06248-c87c-4a56-a718-0584d0cdc85d.png ├── Mount._Fuji_early_in_the_morning_早朝の富士山_-_panoramio.jpg └── 8,848m_Everest_8,516m_Lhotse_Himalaya_Mountain_Flights_Nepal_-_panoramio_(2).jpg ├── screenshot ├── hearts.jpg ├── SCR1-hearts-1.3.jpg ├── SCR1-hearts-1.4.jpg ├── SCR1-hearts-1.6.jpg ├── SCR1-hearts-1.8.jpg ├── SCR1-hearts-1.9.jpg ├── SCR2-hearts-1.3.jpg ├── SCR2-hearts-1.4.jpg ├── SCR2-hearts-1.8.jpg ├── SCR3-hearts-1.4.jpg ├── SCR3-hearts-1.6.jpg ├── SCR3-hearts-1.8.jpg ├── SCR4-hearts-1.6.jpg ├── SCR4-hearts.1.8.jpg ├── SCR5-hearts.1.8.jpg ├── SCR1-hearts-1.8.4.jpg └── SCR2-hearts-1.5.5.jpg ├── SVG-cards ├── Default │ ├── back.png │ ├── club_1.png │ ├── club_2.png │ ├── club_3.png │ ├── club_4.png │ ├── club_5.png │ ├── club_6.png │ ├── club_7.png │ ├── club_8.png │ ├── club_9.png │ ├── empty.png │ ├── club_10.png │ ├── heart_1.png │ ├── heart_10.png │ ├── heart_2.png │ ├── heart_3.png │ ├── heart_4.png │ ├── heart_5.png │ ├── heart_6.png │ ├── heart_7.png │ ├── heart_8.png │ ├── heart_9.png │ ├── spade_1.png │ ├── spade_10.png │ ├── spade_2.png │ ├── spade_3.png │ ├── spade_4.png │ ├── spade_5.png │ ├── spade_6.png │ ├── spade_7.png │ ├── spade_8.png │ ├── spade_9.png │ ├── card-base2.png │ ├── card-frame.png │ ├── card-invis.png │ ├── club_jack.png │ ├── club_king.png │ ├── club_queen.png │ ├── diamond_1.png │ ├── diamond_10.png │ ├── diamond_2.png │ ├── diamond_3.png │ ├── diamond_4.png │ ├── diamond_5.png │ ├── diamond_6.png │ ├── diamond_7.png │ ├── diamond_8.png │ ├── diamond_9.png │ ├── heart_jack.png │ ├── heart_king.png │ ├── heart_queen.png │ ├── spade_jack.png │ ├── spade_king.png │ ├── spade_queen.png │ ├── diamond_jack.png │ ├── diamond_king.png │ ├── diamond_queen.png │ └── heart_1(80x115).png ├── white │ ├── back07.png │ ├── white_d_a.svg │ ├── white_h_a.svg │ ├── white_d_4.svg │ └── white_d_2.svg ├── mittelalter │ ├── back.png │ ├── club_1.png │ ├── club_10.png │ ├── club_2.png │ ├── club_3.png │ ├── club_4.png │ ├── club_5.png │ ├── club_6.png │ ├── club_7.png │ ├── club_8.png │ ├── club_9.png │ ├── heart_1.png │ ├── heart_2.png │ ├── heart_3.png │ ├── heart_4.png │ ├── heart_5.png │ ├── heart_6.png │ ├── heart_7.png │ ├── heart_8.png │ ├── heart_9.png │ ├── spade_1.png │ ├── spade_2.png │ ├── spade_3.png │ ├── spade_4.png │ ├── spade_5.png │ ├── spade_6.png │ ├── spade_7.png │ ├── spade_8.png │ ├── spade_9.png │ ├── club_jack.png │ ├── club_king.png │ ├── diamond_1.png │ ├── diamond_2.png │ ├── diamond_3.png │ ├── diamond_4.png │ ├── diamond_5.png │ ├── diamond_6.png │ ├── diamond_7.png │ ├── diamond_8.png │ ├── diamond_9.png │ ├── heart_10.png │ ├── spade_10.png │ ├── club_queen.png │ ├── diamond_10.png │ ├── diamond_jack.png │ ├── diamond_king.png │ ├── heart_jack.png │ ├── heart_king.png │ ├── heart_queen.png │ ├── spade_jack.png │ ├── spade_king.png │ ├── spade_queen.png │ └── diamond_queen.png ├── tigullio-modern │ ├── back.png │ ├── club_1.png │ ├── club_10.png │ ├── club_2.png │ ├── club_3.png │ ├── club_4.png │ ├── club_5.png │ ├── club_6.png │ ├── club_7.png │ ├── club_8.png │ ├── club_9.png │ ├── heart_1.png │ ├── heart_10.png │ ├── heart_2.png │ ├── heart_3.png │ ├── heart_4.png │ ├── heart_5.png │ ├── heart_6.png │ ├── heart_7.png │ ├── heart_8.png │ ├── heart_9.png │ ├── spade_1.png │ ├── spade_10.png │ ├── spade_2.png │ ├── spade_3.png │ ├── spade_4.png │ ├── spade_5.png │ ├── spade_6.png │ ├── spade_7.png │ ├── spade_8.png │ ├── spade_9.png │ ├── club_jack.png │ ├── club_king.png │ ├── club_queen.png │ ├── diamond_1.png │ ├── diamond_10.png │ ├── diamond_2.png │ ├── diamond_3.png │ ├── diamond_4.png │ ├── diamond_5.png │ ├── diamond_6.png │ ├── diamond_7.png │ ├── diamond_8.png │ ├── diamond_9.png │ ├── heart_jack.png │ ├── heart_king.png │ ├── spade_jack.png │ ├── spade_king.png │ ├── diamond_jack.png │ ├── diamond_king.png │ ├── diamond_queen.png │ ├── heart_queen.png │ └── spade_queen.png ├── English │ ├── diamond_1.svg │ ├── heart_1.svg │ ├── diamond_2.svg │ ├── spade_1.svg │ ├── diamond_4.svg │ ├── club_1.svg │ ├── diamond_3.svg │ └── diamond_7.svg ├── tigullio-international │ ├── diamond_1.svg │ ├── diamond_4.svg │ ├── spade_1.svg │ ├── diamond_2.svg │ └── diamond_3.svg ├── neoclassical │ ├── diamond_1.svg │ ├── heart_1.svg │ ├── diamond_2.svg │ └── spade_1.svg └── Russian │ ├── diamond_2.svg │ ├── diamond_4.svg │ ├── heart_1.svg │ ├── diamond_3.svg │ └── diamond_5.svg ├── languages ├── translation_en.qm ├── translation_fr.qm └── translation_ru.qm ├── sounds ├── 493696__stib__bingbong.wav ├── 133283__fins__game-over.wav ├── 171671__fins__success-1.wav ├── 240777__f4ngy__dealing-card.wav ├── 96127__bmaczero__contact1.wav ├── 34201__themfish__glass-house1.wav ├── 322897__rhodesmas__connected-01.wav ├── 400163__vitovsky1__fanfare-short.wav ├── 322895__rhodesmas__disconnected-01.wav ├── 344013__reitanna__high-pitched-ah2.wav ├── 434472__dersuperanton__taking-card.wav ├── 423767__someonecool14__card-shuffling.wav ├── 253886__themusicalnomad__negative-beeps.wav ├── 403013__inspectorj__ui-confirmation-alert-b5.wav └── Soundwhich - Correct (LittleRainySeasons) [public].wav ├── main.cpp ├── rules.cpp ├── credits.cpp ├── settings.cpp ├── online.cpp ├── rules.h ├── credits.h ├── settings.h ├── clabel.cpp ├── online.h ├── variants.h ├── clabel.h ├── cgame.h ├── ctable.h ├── ccardsplayed.h ├── connect.h ├── LICENSE ├── speed.h ├── debug.h ├── cgame.cpp ├── cdeck.h ├── ccardsplayed.cpp ├── ctable.cpp ├── cstatistics.h ├── connect.cpp ├── speed.cpp ├── Hearts.pro ├── debug.cpp └── README.md /icons/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/heart.png -------------------------------------------------------------------------------- /icons/muted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/muted.png -------------------------------------------------------------------------------- /icons/deck_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/deck_h.png -------------------------------------------------------------------------------- /icons/deck_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/deck_n.png -------------------------------------------------------------------------------- /icons/deck_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/deck_s.png -------------------------------------------------------------------------------- /icons/up-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/up-icon.png -------------------------------------------------------------------------------- /icons/connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/connected.png -------------------------------------------------------------------------------- /icons/heart-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/heart-grey.png -------------------------------------------------------------------------------- /icons/left-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/left-icon.png -------------------------------------------------------------------------------- /icons/right-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/right-icon.png -------------------------------------------------------------------------------- /icons/table-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/table-icon.png -------------------------------------------------------------------------------- /backgrounds/leaves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/leaves.jpg -------------------------------------------------------------------------------- /backgrounds/marble.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/marble.jpg -------------------------------------------------------------------------------- /icons/computer-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/computer-icon.png -------------------------------------------------------------------------------- /icons/disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/disconnected.png -------------------------------------------------------------------------------- /icons/no_pass-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/icons/no_pass-icon.png -------------------------------------------------------------------------------- /screenshot/hearts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/hearts.jpg -------------------------------------------------------------------------------- /backgrounds/eso1723a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/eso1723a.jpg -------------------------------------------------------------------------------- /SVG-cards/Default/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/back.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_1.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_2.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_3.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_4.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_5.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_6.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_7.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_8.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_9.png -------------------------------------------------------------------------------- /SVG-cards/Default/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/empty.png -------------------------------------------------------------------------------- /SVG-cards/white/back07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/white/back07.png -------------------------------------------------------------------------------- /languages/translation_en.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/languages/translation_en.qm -------------------------------------------------------------------------------- /languages/translation_fr.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/languages/translation_fr.qm -------------------------------------------------------------------------------- /languages/translation_ru.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/languages/translation_ru.qm -------------------------------------------------------------------------------- /SVG-cards/Default/club_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_10.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_1.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_10.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_2.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_3.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_4.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_5.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_6.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_7.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_8.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_9.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_1.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_10.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_2.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_3.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_4.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_5.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_6.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_7.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_8.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_9.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/back.png -------------------------------------------------------------------------------- /screenshot/SCR1-hearts-1.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR1-hearts-1.3.jpg -------------------------------------------------------------------------------- /screenshot/SCR1-hearts-1.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR1-hearts-1.4.jpg -------------------------------------------------------------------------------- /screenshot/SCR1-hearts-1.6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR1-hearts-1.6.jpg -------------------------------------------------------------------------------- /screenshot/SCR1-hearts-1.8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR1-hearts-1.8.jpg -------------------------------------------------------------------------------- /screenshot/SCR1-hearts-1.9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR1-hearts-1.9.jpg -------------------------------------------------------------------------------- /screenshot/SCR2-hearts-1.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR2-hearts-1.3.jpg -------------------------------------------------------------------------------- /screenshot/SCR2-hearts-1.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR2-hearts-1.4.jpg -------------------------------------------------------------------------------- /screenshot/SCR2-hearts-1.8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR2-hearts-1.8.jpg -------------------------------------------------------------------------------- /screenshot/SCR3-hearts-1.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR3-hearts-1.4.jpg -------------------------------------------------------------------------------- /screenshot/SCR3-hearts-1.6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR3-hearts-1.6.jpg -------------------------------------------------------------------------------- /screenshot/SCR3-hearts-1.8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR3-hearts-1.8.jpg -------------------------------------------------------------------------------- /screenshot/SCR4-hearts-1.6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR4-hearts-1.6.jpg -------------------------------------------------------------------------------- /screenshot/SCR4-hearts.1.8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR4-hearts.1.8.jpg -------------------------------------------------------------------------------- /screenshot/SCR5-hearts.1.8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR5-hearts.1.8.jpg -------------------------------------------------------------------------------- /SVG-cards/Default/card-base2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/card-base2.png -------------------------------------------------------------------------------- /SVG-cards/Default/card-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/card-frame.png -------------------------------------------------------------------------------- /SVG-cards/Default/card-invis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/card-invis.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_jack.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_king.png -------------------------------------------------------------------------------- /SVG-cards/Default/club_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/club_queen.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_1.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_10.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_2.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_3.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_4.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_5.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_6.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_7.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_8.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_9.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_jack.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_king.png -------------------------------------------------------------------------------- /SVG-cards/Default/heart_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_queen.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_jack.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_king.png -------------------------------------------------------------------------------- /SVG-cards/Default/spade_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/spade_queen.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_1.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_10.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_2.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_3.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_4.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_5.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_6.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_7.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_8.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_9.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_1.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_2.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_3.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_4.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_5.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_6.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_7.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_8.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_9.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_1.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_2.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_3.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_4.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_5.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_6.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_7.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_8.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_9.png -------------------------------------------------------------------------------- /backgrounds/Wadi_rum_desert.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/Wadi_rum_desert.jpg -------------------------------------------------------------------------------- /screenshot/SCR1-hearts-1.8.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR1-hearts-1.8.4.jpg -------------------------------------------------------------------------------- /screenshot/SCR2-hearts-1.5.5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/screenshot/SCR2-hearts-1.5.5.jpg -------------------------------------------------------------------------------- /sounds/493696__stib__bingbong.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/493696__stib__bingbong.wav -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_jack.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_king.png -------------------------------------------------------------------------------- /SVG-cards/Default/diamond_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/diamond_queen.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_jack.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_king.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_1.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_2.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_3.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_4.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_5.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_6.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_7.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_8.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_9.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_10.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_10.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/back.png -------------------------------------------------------------------------------- /sounds/133283__fins__game-over.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/133283__fins__game-over.wav -------------------------------------------------------------------------------- /sounds/171671__fins__success-1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/171671__fins__success-1.wav -------------------------------------------------------------------------------- /SVG-cards/Default/heart_1(80x115).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/Default/heart_1(80x115).png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/club_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/club_queen.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_10.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_jack.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_king.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_jack.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_king.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/heart_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/heart_queen.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_jack.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_king.png -------------------------------------------------------------------------------- /SVG-cards/mittelalter/spade_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/spade_queen.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_1.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_10.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_2.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_3.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_4.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_5.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_6.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_7.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_8.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_9.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_1.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_10.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_2.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_3.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_4.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_5.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_6.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_7.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_8.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_9.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_1.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_10.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_2.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_3.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_4.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_5.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_6.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_7.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_8.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_9.png -------------------------------------------------------------------------------- /sounds/240777__f4ngy__dealing-card.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/240777__f4ngy__dealing-card.wav -------------------------------------------------------------------------------- /sounds/96127__bmaczero__contact1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/96127__bmaczero__contact1.wav -------------------------------------------------------------------------------- /SVG-cards/mittelalter/diamond_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/mittelalter/diamond_queen.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_jack.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_king.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/club_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/club_queen.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_1.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_10.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_2.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_3.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_4.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_5.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_6.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_7.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_8.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_9.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_jack.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_king.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_jack.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_king.png -------------------------------------------------------------------------------- /sounds/34201__themfish__glass-house1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/34201__themfish__glass-house1.wav -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_jack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_jack.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_king.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_king.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/diamond_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/diamond_queen.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/heart_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/heart_queen.png -------------------------------------------------------------------------------- /SVG-cards/tigullio-modern/spade_queen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/SVG-cards/tigullio-modern/spade_queen.png -------------------------------------------------------------------------------- /sounds/322897__rhodesmas__connected-01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/322897__rhodesmas__connected-01.wav -------------------------------------------------------------------------------- /sounds/400163__vitovsky1__fanfare-short.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/400163__vitovsky1__fanfare-short.wav -------------------------------------------------------------------------------- /sounds/322895__rhodesmas__disconnected-01.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/322895__rhodesmas__disconnected-01.wav -------------------------------------------------------------------------------- /sounds/344013__reitanna__high-pitched-ah2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/344013__reitanna__high-pitched-ah2.wav -------------------------------------------------------------------------------- /sounds/434472__dersuperanton__taking-card.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/434472__dersuperanton__taking-card.wav -------------------------------------------------------------------------------- /sounds/423767__someonecool14__card-shuffling.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/423767__someonecool14__card-shuffling.wav -------------------------------------------------------------------------------- /sounds/253886__themusicalnomad__negative-beeps.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/253886__themusicalnomad__negative-beeps.wav -------------------------------------------------------------------------------- /sounds/403013__inspectorj__ui-confirmation-alert-b5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/403013__inspectorj__ui-confirmation-alert-b5.wav -------------------------------------------------------------------------------- /backgrounds/__Palm___Beach._Port_Douglas._-_panoramio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/__Palm___Beach._Port_Douglas._-_panoramio.jpg -------------------------------------------------------------------------------- /backgrounds/380441109-2ed06248-c87c-4a56-a718-0584d0cdc85d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/380441109-2ed06248-c87c-4a56-a718-0584d0cdc85d.png -------------------------------------------------------------------------------- /sounds/Soundwhich - Correct (LittleRainySeasons) [public].wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/sounds/Soundwhich - Correct (LittleRainySeasons) [public].wav -------------------------------------------------------------------------------- /backgrounds/Mount._Fuji_early_in_the_morning_早朝の富士山_-_panoramio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/Mount._Fuji_early_in_the_morning_早朝の富士山_-_panoramio.jpg -------------------------------------------------------------------------------- /backgrounds/8,848m_Everest_8,516m_Lhotse_Himalaya_Mountain_Flights_Nepal_-_panoramio_(2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rescator7/Hearts/HEAD/backgrounds/8,848m_Everest_8,516m_Lhotse_Himalaya_Mountain_Flights_Nepal_-_panoramio_(2).jpg -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | MainWindow w; 8 | 9 | w.show(); 10 | 11 | return a.exec(); 12 | } 13 | -------------------------------------------------------------------------------- /rules.cpp: -------------------------------------------------------------------------------- 1 | #include "rules.h" 2 | #include "ui_rules.h" 3 | 4 | Rules::Rules(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Rules) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | Rules::~Rules() 12 | { 13 | delete ui; 14 | } 15 | -------------------------------------------------------------------------------- /credits.cpp: -------------------------------------------------------------------------------- 1 | #include "credits.h" 2 | #include "ui_credits.h" 3 | 4 | Credits::Credits(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Credits) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | Credits::~Credits() 12 | { 13 | delete ui; 14 | } 15 | -------------------------------------------------------------------------------- /settings.cpp: -------------------------------------------------------------------------------- 1 | #include "settings.h" 2 | #include "ui_settings.h" 3 | 4 | Settings::Settings(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Settings) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | Settings::~Settings() 12 | { 13 | delete ui; 14 | } 15 | -------------------------------------------------------------------------------- /online.cpp: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #include "online.h" 4 | #include "ui_online.h" 5 | 6 | online::online(QWidget *parent) : 7 | QDialog(parent), 8 | ui(new Ui::online) 9 | { 10 | ui->setupUi(this); 11 | } 12 | 13 | online::~online() 14 | { 15 | delete ui; 16 | } 17 | 18 | #endif // ONLINE_PLAY 19 | -------------------------------------------------------------------------------- /rules.h: -------------------------------------------------------------------------------- 1 | #ifndef RULES_H 2 | #define RULES_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class Rules; 8 | } 9 | 10 | class Rules : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit Rules(QWidget *parent = nullptr); 16 | ~Rules(); 17 | 18 | private: 19 | Ui::Rules *ui; 20 | }; 21 | 22 | #endif // RULES_H 23 | -------------------------------------------------------------------------------- /credits.h: -------------------------------------------------------------------------------- 1 | #ifndef CREDITS_H 2 | #define CREDITS_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class Credits; 8 | } 9 | 10 | class Credits : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit Credits(QWidget *parent = nullptr); 16 | ~Credits(); 17 | 18 | private: 19 | Ui::Credits *ui; 20 | }; 21 | 22 | #endif // CREDITS_H 23 | -------------------------------------------------------------------------------- /settings.h: -------------------------------------------------------------------------------- 1 | #ifndef SETTINGS_H 2 | #define SETTINGS_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class Settings; 8 | } 9 | 10 | class Settings : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit Settings(QWidget *parent = nullptr); 16 | ~Settings(); 17 | 18 | private: 19 | Ui::Settings *ui; 20 | }; 21 | 22 | #endif // SETTINGS_H 23 | -------------------------------------------------------------------------------- /clabel.cpp: -------------------------------------------------------------------------------- 1 | #include "clabel.h" 2 | 3 | CLabel::CLabel(QWidget* parent, Qt::WindowFlags f) 4 | : QLabel(parent) { 5 | if (f) {} // do nothing, and remove unused parameter warning 6 | } 7 | 8 | CLabel::~CLabel() {} 9 | 10 | void CLabel::mousePressEvent(QMouseEvent* event) { 11 | emit clicked(); 12 | if (event) {} // do nothing, and remove unused parameter warning 13 | } 14 | 15 | -------------------------------------------------------------------------------- /online.h: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #ifndef ONLINE_H 4 | #define ONLINE_H 5 | 6 | #include 7 | 8 | namespace Ui { 9 | class online; 10 | } 11 | 12 | class online : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit online(QWidget *parent = 0); 18 | ~online(); 19 | 20 | private: 21 | Ui::online *ui; 22 | }; 23 | 24 | #endif // ONLINE_H 25 | 26 | #endif // ONLINE_PLAY 27 | -------------------------------------------------------------------------------- /variants.h: -------------------------------------------------------------------------------- 1 | #ifndef VARIANTS 2 | #define VARIANTS 3 | 4 | const int perfect_100_value = 50; // the hand score will be set to this number. 5 | const int no_trick_value = 5; // the no trick bonus will substract this number to the hand score. 6 | const int omnibus_value = 10; // the bonus for winning the jack of diamond. 7 | const int game_over_score = 100; // reach this score to make the game over. 8 | 9 | #endif // VARIANTS 10 | -------------------------------------------------------------------------------- /clabel.h: -------------------------------------------------------------------------------- 1 | #ifndef CLABEL_H 2 | #define CLABEL_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class CLabel : public QLabel { 9 | Q_OBJECT 10 | 11 | public: 12 | explicit CLabel(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); 13 | ~CLabel(); 14 | 15 | signals: 16 | void clicked(); 17 | 18 | protected: 19 | void mousePressEvent(QMouseEvent* event); 20 | 21 | }; 22 | 23 | #endif // CLABEL_H 24 | -------------------------------------------------------------------------------- /cgame.h: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #ifndef CGAME_H 4 | #define CGAME_H 5 | 6 | #include 7 | 8 | namespace Ui { 9 | class CGame; 10 | } 11 | 12 | class CGame : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit CGame(QWidget *parent = nullptr); 18 | ~CGame(); 19 | 20 | private: 21 | Ui::CGame *ui; 22 | unsigned int flags; 23 | 24 | public: 25 | void set_flags(unsigned int f); 26 | unsigned int get_flags(); 27 | private slots: 28 | void on_buttonBox_accepted(); 29 | }; 30 | 31 | #endif // CGAME_H 32 | 33 | #endif // ONLINE_PLAY 34 | -------------------------------------------------------------------------------- /ctable.h: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #ifndef CTABLE_H 4 | #define CTABLE_H 5 | 6 | #include 7 | 8 | namespace Ui { 9 | class CTable; 10 | } 11 | 12 | class CTable : public QWidget 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit CTable(QWidget *parent = nullptr); 18 | ~CTable(); 19 | 20 | private: 21 | Ui::CTable *ui; 22 | 23 | public: 24 | void AddRow(QString id, QString flags); 25 | void Empty(); 26 | void RemoveRow(QString id); 27 | void SetPlayer(QString id, QString name, QString chair); 28 | void Translate(); 29 | 30 | signals: 31 | void clicked(int id, char chair); 32 | 33 | private slots: 34 | void on_tableWidget_cellDoubleClicked(int row, int column); 35 | }; 36 | 37 | #endif // CTABLE_H 38 | 39 | #endif // ONLINE_PLAY 40 | -------------------------------------------------------------------------------- /icons/Paomedia-Small-N-Flat-Sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /icons/Paomedia-Small-N-Flat-Sign-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /icons/Paomedia-Small-N-Flat-Sign-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ccardsplayed.h: -------------------------------------------------------------------------------- 1 | #ifdef DEBUG 2 | 3 | #ifndef CCARDSPLAYED_H 4 | #define CCARDSPLAYED_H 5 | 6 | #include "define.h" 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "cdeck.h" 15 | 16 | class CDeck; 17 | 18 | class CCardsPlayed : public QWidget 19 | { 20 | Q_OBJECT 21 | 22 | public: 23 | CCardsPlayed(CDeck *d); 24 | ~CCardsPlayed(); 25 | 26 | private: // variables; 27 | CDeck *deck; 28 | QVBoxLayout *layout; 29 | QHBoxLayout *box_clubs; 30 | QHBoxLayout *box_spade; 31 | QHBoxLayout *box_diamond; 32 | QHBoxLayout *box_hearts; 33 | 34 | QLabel *labels[52]; 35 | 36 | public: 37 | void play(int card); 38 | void reset(); 39 | void set_deck(); 40 | void Translate(); 41 | signals: 42 | 43 | public slots: 44 | }; 45 | #endif // CCARDSPLAYED_H 46 | 47 | #endif // DEBUG 48 | -------------------------------------------------------------------------------- /icons/Paomedia-Small-N-Flat-Sign-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /connect.h: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #ifndef CONNECT_H 4 | #define CONNECT_H 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | namespace Ui { 11 | class Connect; 12 | } 13 | 14 | class Connect : public QDialog 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit Connect(QWidget *parent = nullptr); 20 | ~Connect(); 21 | 22 | QString getHost(); 23 | QString getPort(); 24 | QString getHandle(); 25 | QString getPassword(); 26 | 27 | void config(QString &username, QString &password, bool warning); 28 | bool WarningAccepted(); 29 | bool WarningDisabled(); 30 | bool isUnRegistered(); 31 | 32 | private: 33 | QPushButton *button_Connect; 34 | QPushButton *button_Register; 35 | QPushButton *button_Cancel; 36 | Ui::Connect *ui; 37 | bool warning_accepted; 38 | bool warning_disabled; 39 | bool UnRegistered; 40 | 41 | private slots: 42 | void on_checkBox_clicked(); 43 | 44 | public slots: 45 | void diagButtonClicked(QAbstractButton *button); 46 | }; 47 | 48 | #endif // CONNECT_H 49 | 50 | #endif // ONLINE_PLAY 51 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Rescator7 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /speed.h: -------------------------------------------------------------------------------- 1 | #ifndef SPEED_H 2 | #define SPEED_H 3 | 4 | #include 5 | #include "config.h" 6 | 7 | namespace Ui { 8 | class CSpeed; 9 | } 10 | 11 | class CSpeed : public QWidget 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit CSpeed(QWidget *parent = 0, CConfig *config = 0); 17 | ~CSpeed(); 18 | 19 | private slots: 20 | void on_pushButton_cancel_clicked(); 21 | void on_horizontalSlider_play_a_card_valueChanged(int value); 22 | void on_horizontalSlider_play_2_clubs_valueChanged(int value); 23 | void on_horizontalSlider_shuffle_valueChanged(int value); 24 | void on_horizontalSlider_clear_table_valueChanged(int value); 25 | void on_horizontalSlider_your_turn_valueChanged(int value); 26 | void on_horizontalSlider_pass_cards_valueChanged(int value); 27 | void on_horizontalSlider_animate_pass_cards_valueChanged(int value); 28 | void on_horizontalSlider_animate_play_card_valueChanged(int value); 29 | void on_pushButton_save_clicked(); 30 | 31 | public: 32 | void save(); 33 | void reset(); 34 | void popup(); 35 | void Translate(); 36 | 37 | private: 38 | Ui::CSpeed *ui; 39 | CConfig *mConfig; 40 | }; 41 | 42 | #endif // SPEED_H 43 | -------------------------------------------------------------------------------- /debug.h: -------------------------------------------------------------------------------- 1 | #ifdef DEBUG 2 | 3 | #ifndef DEBUG_H 4 | #define DEBUG_H 5 | 6 | #include "define.h" 7 | 8 | #include "cdeck.h" 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | const int MAX_HISTORY_SIZE = 1000; 17 | 18 | class CDebug : public QWidget 19 | { 20 | Q_OBJECT 21 | 22 | private: // variables; 23 | QVBoxLayout *layout; 24 | QHBoxLayout *box1; 25 | QHBoxLayout *box2; 26 | QScrollBar *bar; 27 | 28 | CDeck *deck; 29 | QLabel *labels[14]; 30 | 31 | const char *plr_names[MAX_HISTORY_SIZE]; 32 | 33 | bool connected; 34 | bool winners[MAX_HISTORY_SIZE]; 35 | 36 | int cards[MAX_HISTORY_SIZE]; 37 | int ptr_screen; 38 | int history_size; 39 | int cards_saved; 40 | int suit; 41 | int best; 42 | int best_pos; 43 | 44 | private: // functions 45 | void show_history(int slide); 46 | 47 | public: 48 | CDebug(CDeck *d); 49 | ~CDebug(); 50 | 51 | void save_card(int card, const char *name); 52 | void reset(bool conn_state = false); 53 | void refresh(); 54 | void Translate(); 55 | 56 | public slots: 57 | void handle_bar(int value); 58 | }; 59 | #endif // DEBUG_H 60 | 61 | #endif // DEBUG 62 | -------------------------------------------------------------------------------- /cgame.cpp: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #include 4 | 5 | #include "cgame.h" 6 | #include "ui_cgame.h" 7 | #include "define.h" 8 | 9 | CGame::CGame(QWidget *parent) : 10 | QDialog(parent), 11 | ui(new Ui::CGame) 12 | { 13 | ui->setupUi(this); 14 | 15 | ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); 16 | ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Ok")); 17 | 18 | flags = 0; 19 | } 20 | 21 | CGame::~CGame() 22 | { 23 | delete ui; 24 | } 25 | 26 | void CGame::set_flags(unsigned int f) 27 | { 28 | flags = f; 29 | 30 | if (flags & QUEEN_SPADE_f) 31 | ui->checkBox->setChecked(true); 32 | 33 | if (flags & PERFECT_100_f) 34 | ui->checkBox_2->setChecked(true); 35 | 36 | if (flags & OMNIBUS_f) 37 | ui->checkBox_3->setChecked(true); 38 | 39 | if (flags & NO_TRICK_BONUS_f) 40 | ui->checkBox_4->setChecked(true); 41 | 42 | if (flags & NEW_MOON_f) 43 | ui->checkBox_5->setChecked(true); 44 | 45 | if (flags & NO_DRAW_f) 46 | ui->checkBox_6->setChecked(true); 47 | } 48 | 49 | unsigned int CGame::get_flags() 50 | { 51 | return flags; 52 | } 53 | 54 | void CGame::on_buttonBox_accepted() 55 | { 56 | flags = 0; 57 | if (ui->checkBox->isChecked()) 58 | flags = QUEEN_SPADE_f; 59 | 60 | if (ui->checkBox_2->isChecked()) 61 | flags |= PERFECT_100_f; 62 | 63 | if (ui->checkBox_3->isChecked()) 64 | flags |= OMNIBUS_f; 65 | 66 | if (ui->checkBox_4->isChecked()) 67 | flags |= NO_TRICK_BONUS_f; 68 | 69 | if (ui->checkBox_5->isChecked()) 70 | flags |= NEW_MOON_f; 71 | 72 | if (ui->checkBox_6->isChecked()) 73 | flags |= NO_DRAW_f; 74 | } 75 | 76 | #endif // ONLINE_PLAY 77 | -------------------------------------------------------------------------------- /icons/persongeneric.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /cdeck.h: -------------------------------------------------------------------------------- 1 | #ifndef CDECK_H 2 | #define CDECK_H 3 | 4 | #include "define.h" 5 | #include 6 | #include "chearts.h" 7 | 8 | #ifdef DEBUG 9 | 10 | #include "ccardsplayed.h" 11 | 12 | class CCardsPlayed; 13 | #endif // DEBUG 14 | 15 | const int STANDARD_DECK = 0; 16 | const int ENGLISH_DECK = 1; 17 | const int RUSSIAN_DECK = 2; 18 | const int NICU_WHITE_DECK = 3; 19 | const int TIGULLIO_MODERN_DECK = 4; 20 | const int MITTELALTER_DECK = 5; 21 | const int NEOCLASSICAL_DECK = 6; 22 | const int TIGULLIO_INTERNATIONAL_DECK = 7; 23 | 24 | class CDeck 25 | { 26 | public: 27 | CDeck(int deck); 28 | ~CDeck(); 29 | 30 | private: 31 | QImage *img_cards[DECK_SIZE]; 32 | QImage *img_empty_card; 33 | QImage *img_your_turn; 34 | QImage *img_back_card; 35 | QImage *img_card_frame; 36 | QImage *img_card_invis; 37 | 38 | #ifdef DEBUG 39 | CCardsPlayed *cards_played; 40 | #endif // DEBUG 41 | 42 | int current_deck; 43 | 44 | void delete_current_deck(); 45 | void set_standard_deck(); 46 | void set_english_deck(); 47 | void set_russian_deck(); 48 | void set_nicu_white_deck(); 49 | void set_tigullio_modern_deck(); 50 | void set_mittelalter_deck(); 51 | void set_neoclassical_deck(); 52 | void set_tigullio_international_deck(); 53 | 54 | public: 55 | QImage *get_img_card(int card); 56 | void reverse_card_rgb(int card); 57 | void set_deck(int deck); 58 | void load_deck(int deck); 59 | 60 | #ifdef DEBUG 61 | void set_card_played(int card); 62 | void reset_cards_played(); 63 | void show_cards_played(); 64 | void hide_cards_played(); 65 | void Translate(); 66 | #endif // DEBUG 67 | }; 68 | 69 | #endif // CDECK_H 70 | -------------------------------------------------------------------------------- /ccardsplayed.cpp: -------------------------------------------------------------------------------- 1 | #ifdef DEBUG 2 | 3 | #include "ccardsplayed.h" 4 | 5 | CCardsPlayed::CCardsPlayed(CDeck *d) 6 | { 7 | setWindowTitle(tr("Cards played")); 8 | 9 | setAttribute( Qt::WA_QuitOnClose, false ); 10 | 11 | deck = d; 12 | 13 | box_clubs = new QHBoxLayout; 14 | box_spade = new QHBoxLayout; 15 | box_diamond = new QHBoxLayout; 16 | box_hearts = new QHBoxLayout; 17 | 18 | for (int i=0; iresize(55, 100); 21 | labels[i]->setPixmap(QPixmap::fromImage(deck->get_img_card(i)->scaledToHeight(100))); 22 | if (i <= 12) 23 | box_clubs->addWidget(labels[i]); 24 | else 25 | if (i <= 25) 26 | box_spade->addWidget(labels[i]); 27 | else 28 | if (i <= 38) 29 | box_diamond->addWidget(labels[i]); 30 | else 31 | box_hearts->addWidget(labels[i]); 32 | } 33 | 34 | QGroupBox *grp1 = new QGroupBox; 35 | grp1->setLayout(box_clubs); 36 | 37 | QGroupBox *grp2 = new QGroupBox; 38 | grp2->setLayout(box_spade); 39 | 40 | QGroupBox *grp3 = new QGroupBox; 41 | grp3->setLayout(box_diamond); 42 | 43 | QGroupBox *grp4 = new QGroupBox; 44 | grp4->setLayout(box_hearts); 45 | 46 | layout = new QVBoxLayout(); 47 | layout->addWidget(grp1); 48 | layout->addWidget(grp2); 49 | layout->addWidget(grp3); 50 | layout->addWidget(grp4); 51 | 52 | setLayout(layout); 53 | 54 | QPalette pal = palette(); 55 | 56 | pal.setColor(QPalette::Window, QColor(63, 159, 82)); 57 | pal.setColor(QPalette::WindowText, Qt::black); 58 | setPalette(pal); 59 | 60 | resize(800, 600); 61 | } 62 | 63 | CCardsPlayed::~CCardsPlayed() 64 | { 65 | for (int i=0; i= DECK_SIZE)) return; 78 | 79 | labels[card]->setDisabled(true); 80 | } 81 | 82 | void CCardsPlayed::reset() 83 | { 84 | for (int i=0; isetDisabled(false); 86 | } 87 | 88 | void CCardsPlayed::set_deck() 89 | { 90 | for (int i=0; isetPixmap(QPixmap::fromImage(deck->get_img_card(i)->scaledToHeight(100))); 92 | } 93 | 94 | void CCardsPlayed::Translate() 95 | { 96 | setWindowTitle(tr("Cards played")); 97 | } 98 | 99 | #endif // DEBUG 100 | -------------------------------------------------------------------------------- /ctable.cpp: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #include "ctable.h" 4 | #include "define.h" 5 | #include "ui_ctable.h" 6 | 7 | CTable::CTable(QWidget *parent) : 8 | QWidget(parent), 9 | ui(new Ui::CTable) 10 | { 11 | ui->setupUi(this); 12 | ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); 13 | 14 | setWindowTitle(tr("Tables list")); 15 | 16 | setAttribute( Qt::WA_QuitOnClose, false ); 17 | } 18 | 19 | CTable::~CTable() 20 | { 21 | delete ui; 22 | } 23 | 24 | void CTable::AddRow(QString id, QString flags) 25 | { 26 | int rowc = ui->tableWidget->rowCount(); 27 | ui->tableWidget->insertRow(rowc); 28 | 29 | QTableWidgetItem *item_id = new QTableWidgetItem(id); 30 | ui->tableWidget->setItem(rowc, 0, item_id); 31 | 32 | QString s; 33 | int i = flags.toInt(); 34 | 35 | if (i & QUEEN_SPADE_f) s += "Q "; 36 | if (i & PERFECT_100_f) s += "P "; 37 | if (i & OMNIBUS_f) s += "O "; 38 | if (i & NO_TRICK_BONUS_f) s += "T "; 39 | if (i & NEW_MOON_f) s += "M "; 40 | if (!(i & NO_DRAW_f)) s += "D"; 41 | 42 | QTableWidgetItem *item_flags = new QTableWidgetItem(s); 43 | ui->tableWidget->setItem(rowc, 1, item_flags); 44 | 45 | for (int i=0; i<4; i++) { 46 | QTableWidgetItem *empty_item = new QTableWidgetItem(""); 47 | ui->tableWidget->setItem(rowc, i+2, empty_item); 48 | } 49 | } 50 | 51 | void CTable::Empty() 52 | { 53 | ui->tableWidget->setRowCount(0); 54 | } 55 | 56 | void CTable::RemoveRow(QString id) 57 | { 58 | int rowc = ui->tableWidget->rowCount(); 59 | 60 | for (int i=0; itableWidget->item(i, 0)->text() == id) { 62 | ui->tableWidget->removeRow(i); // by removing a row, the index changes, don't forget to break. 63 | break; 64 | } 65 | } 66 | } 67 | 68 | void CTable::SetPlayer(QString id, QString name, QString chair) 69 | { 70 | int rowc = ui->tableWidget->rowCount(); 71 | int c = 0; 72 | 73 | if (chair == "n") c = 2; 74 | else 75 | if (chair == "s") c = 3; 76 | else 77 | if (chair == "w") c = 4; 78 | else 79 | if (chair == "e") c = 5; 80 | 81 | if (!c) return; 82 | 83 | for (int i=0; itableWidget->item(i, 0)->text() == id) { 85 | ui->tableWidget->item(i, c)->setText(name); 86 | } 87 | } 88 | } 89 | 90 | void CTable::on_tableWidget_cellDoubleClicked(int row, int column) 91 | { 92 | int id = ui->tableWidget->item(row, 0)->text().toInt(); 93 | char chair = ' '; 94 | 95 | switch (column) { 96 | case 2: chair = 'n'; break; 97 | case 3: chair = 's'; break; 98 | case 4: chair = 'w'; break; 99 | case 5: chair = 'e'; break; 100 | } 101 | 102 | emit clicked(id, chair); 103 | } 104 | 105 | void CTable::Translate() 106 | { 107 | ui->retranslateUi(this); 108 | } 109 | 110 | #endif // ONLINE_PLAY 111 | -------------------------------------------------------------------------------- /SVG-cards/English/diamond_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /cstatistics.h: -------------------------------------------------------------------------------- 1 | #ifndef CSTATISTICS_H 2 | #define CSTATISTICS_H 3 | 4 | #include 5 | #include 6 | 7 | #include "define.h" 8 | 9 | const char STATS_FILENAME[20] = "/.hearts.stats"; 10 | const char STATS_BACKUP_FILE[20] = "/.hearts.stats.bak"; 11 | 12 | #define STATS_GAME_STARTED 0 13 | #define STATS_GAME_FINISHED 1 14 | #define STATS_HANDS_PLAYED 2 15 | #define STATS_SCORES 3 16 | #define STATS_FIRST_PLACE 4 17 | #define STATS_SECOND_PLACE 5 18 | #define STATS_THIRD_PLACE 6 19 | #define STATS_FOURTH_PLACE 7 20 | #define STATS_SHOOT_MOON 8 21 | #define STATS_QUEEN_SPADE 9 22 | #define STATS_OMNIBUS 10 23 | #define STATS_NO_TRICKS 11 24 | #define STATS_PERFECT_100 12 25 | #define STATS_UNDO 13 26 | 27 | namespace Ui { 28 | class CStatistics; 29 | } 30 | 31 | class CStatistics : public QWidget 32 | { 33 | Q_OBJECT 34 | 35 | public: 36 | explicit CStatistics(QWidget *parent = nullptr); 37 | ~CStatistics(); 38 | 39 | private: 40 | Ui::CStatistics *ui; 41 | bool file_corrupted; 42 | 43 | QTableWidgetItem *item_names[MAX_PLR_NAMES]; 44 | QTableWidgetItem *item_first_place[MAX_PLR_NAMES]; 45 | QTableWidgetItem *item_second_place[MAX_PLR_NAMES]; 46 | QTableWidgetItem *item_third_place[MAX_PLR_NAMES]; 47 | QTableWidgetItem *item_fourth_place[MAX_PLR_NAMES]; 48 | QTableWidgetItem *item_avg_score[MAX_PLR_NAMES]; 49 | QTableWidgetItem *item_best_score[MAX_PLR_NAMES]; 50 | QTableWidgetItem *item_worst_score[MAX_PLR_NAMES]; 51 | QTableWidgetItem *item_shoot_moon[MAX_PLR_NAMES]; 52 | QTableWidgetItem *item_queen_spade[MAX_PLR_NAMES]; 53 | QTableWidgetItem *item_omnibus[MAX_PLR_NAMES]; 54 | QTableWidgetItem *item_no_tricks[MAX_PLR_NAMES]; 55 | QTableWidgetItem *item_perfect_100[MAX_PLR_NAMES]; 56 | 57 | int game_started; 58 | int game_finished; 59 | int hands_played; 60 | int undo; 61 | 62 | int first_place[MAX_PLR_NAMES]; 63 | int second_place[MAX_PLR_NAMES]; 64 | int third_place[MAX_PLR_NAMES]; 65 | int fourth_place[MAX_PLR_NAMES]; 66 | 67 | int total_score[MAX_PLR_NAMES]; 68 | int best_score[MAX_PLR_NAMES]; 69 | int worst_score[MAX_PLR_NAMES]; 70 | 71 | int shoot_moon[MAX_PLR_NAMES]; 72 | int queen_spade_taken[MAX_PLR_NAMES]; 73 | int omnibus_bonus_taken[MAX_PLR_NAMES]; 74 | int no_tricks_bonus_taken[MAX_PLR_NAMES]; 75 | int perfect_100_bonus_taken[MAX_PLR_NAMES]; 76 | 77 | private: // functions 78 | void init_vars(); 79 | void create_window(); 80 | void update_window(int plr, int stats); 81 | 82 | public: // functions 83 | bool is_file_corrupted(); 84 | 85 | int load_stats_file(); 86 | int save_stats_file(); 87 | 88 | void increase_stats(int plr, int stats); 89 | void set_score(int plr, int score); 90 | void reset(); 91 | void show_stats(); 92 | void Translate(); 93 | }; 94 | 95 | #endif // CSTATISTICS_H 96 | -------------------------------------------------------------------------------- /connect.cpp: -------------------------------------------------------------------------------- 1 | #ifdef ONLINE_PLAY 2 | 3 | #include "connect.h" 4 | #include "ui_connect.h" 5 | #include 6 | 7 | Connect::Connect(QWidget *parent) : 8 | QDialog(parent), 9 | ui(new Ui::Connect) 10 | { 11 | warning_accepted = false; 12 | warning_disabled = false; 13 | UnRegistered = true; 14 | 15 | ui->setupUi(this); 16 | 17 | button_Register = new QPushButton(tr("Register")); 18 | ui->buttonBox->addButton(button_Register, QDialogButtonBox::AcceptRole); 19 | 20 | button_Connect = new QPushButton(tr("Connect 2")); 21 | button_Connect->setDefault(true); 22 | 23 | ui->buttonBox->addButton(button_Connect, QDialogButtonBox::AcceptRole); 24 | 25 | button_Cancel = new QPushButton(tr("Cancel")); 26 | ui->buttonBox->addButton(button_Cancel, QDialogButtonBox::RejectRole); 27 | 28 | connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), SLOT(diagButtonClicked(QAbstractButton*))); 29 | } 30 | 31 | Connect::~Connect() 32 | { 33 | delete ui; 34 | delete button_Register; 35 | delete button_Connect; 36 | delete button_Cancel; 37 | } 38 | 39 | QString Connect::getHost() 40 | { 41 | return ui->lineEdit->text(); 42 | } 43 | 44 | QString Connect::getPort() 45 | { 46 | return ui->lineEdit_2->text(); 47 | } 48 | 49 | QString Connect::getHandle() 50 | { 51 | return ui->lineEdit_3->text(); 52 | } 53 | 54 | QString Connect::getPassword() 55 | { 56 | return ui->lineEdit_4->text(); 57 | } 58 | 59 | void Connect::config(QString &username, QString &password, bool warning) 60 | { 61 | ui->lineEdit_3->setText(username); 62 | ui->lineEdit_4->setText(password); 63 | 64 | if (!warning) { 65 | warning_disabled = true; 66 | ui->checkBox->hide(); 67 | } 68 | } 69 | 70 | void Connect::diagButtonClicked(QAbstractButton* button) 71 | { 72 | if (!warning_disabled && ((button == button_Register) || (button == button_Connect))) { 73 | QMessageBox msgBox(this); 74 | msgBox.setWindowTitle(tr("Warning!")); 75 | msgBox.setText(tr("The password will be sent unencrypted over the internet.\r\nIt is also saved unencrypted in ~/.hearts\r\n\r\n" 76 | "DON'T reuse this password !\r\n\r\nDo you want to continue ?")); 77 | msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); 78 | msgBox.setDefaultButton(QMessageBox::No); 79 | if (msgBox.exec() == QMessageBox::Yes) 80 | warning_accepted = true; 81 | } 82 | 83 | if (button == button_Connect) 84 | UnRegistered = false; 85 | } 86 | 87 | void Connect::on_checkBox_clicked() 88 | { 89 | warning_disabled = true; 90 | ui->checkBox->hide(); 91 | } 92 | 93 | bool Connect::WarningAccepted() 94 | { 95 | return warning_disabled ? true : warning_accepted; 96 | } 97 | 98 | bool Connect::WarningDisabled() 99 | { 100 | return warning_disabled; 101 | } 102 | 103 | bool Connect::isUnRegistered() 104 | { 105 | return UnRegistered; 106 | } 107 | 108 | #endif // ONLINE_PLAY 109 | -------------------------------------------------------------------------------- /speed.cpp: -------------------------------------------------------------------------------- 1 | #include "speed.h" 2 | #include "ui_speed.h" 3 | #include "config.h" 4 | 5 | CSpeed::CSpeed(QWidget *parent, CConfig *config) : 6 | QWidget(parent), 7 | ui(new Ui::CSpeed) 8 | { 9 | ui->setupUi(this); 10 | 11 | mConfig = config; 12 | } 13 | 14 | CSpeed::~CSpeed() 15 | { 16 | delete ui; 17 | } 18 | 19 | void CSpeed::popup() 20 | { 21 | reset(); 22 | show(); 23 | } 24 | 25 | void CSpeed::reset() 26 | { 27 | ui->horizontalSlider_play_a_card->setValue(mConfig->get_speed(SPEED_PLAY_CARD)); 28 | ui->horizontalSlider_play_2_clubs->setValue(mConfig->get_speed(SPEED_PLAY_TWO_CLUBS)); 29 | ui->horizontalSlider_shuffle->setValue(mConfig->get_speed(SPEED_SHUFFLE)); 30 | ui->horizontalSlider_clear_table->setValue(mConfig->get_speed(SPEED_CLEAR_TABLE)); 31 | ui->horizontalSlider_your_turn->setValue(mConfig->get_speed(SPEED_YOUR_TURN)); 32 | ui->horizontalSlider_pass_cards->setValue(mConfig->get_speed(SPEED_PASS_CARDS)); 33 | ui->horizontalSlider_animate_pass_cards->setValue(mConfig->get_speed(SPEED_ANIMATE_PASS_CARDS)); 34 | ui->horizontalSlider_animate_play_card->setValue(mConfig->get_speed(SPEED_ANIMATE_PLAY_CARD)); 35 | } 36 | 37 | void CSpeed::on_pushButton_cancel_clicked() 38 | { 39 | hide(); 40 | } 41 | 42 | void CSpeed::Translate() 43 | { 44 | ui->retranslateUi(this); 45 | } 46 | 47 | void CSpeed::on_horizontalSlider_play_a_card_valueChanged(int value) 48 | { 49 | ui->lcdNumber_play_a_card->display(value); 50 | } 51 | 52 | void CSpeed::on_horizontalSlider_play_2_clubs_valueChanged(int value) 53 | { 54 | ui->lcdNumber_play_2_clubs->display(value); 55 | } 56 | 57 | void CSpeed::on_horizontalSlider_shuffle_valueChanged(int value) 58 | { 59 | ui->lcdNumber_shuffle->display(value); 60 | } 61 | 62 | void CSpeed::on_horizontalSlider_clear_table_valueChanged(int value) 63 | { 64 | ui->lcdNumber_clear_table->display(value); 65 | } 66 | 67 | void CSpeed::on_horizontalSlider_your_turn_valueChanged(int value) 68 | { 69 | ui->lcdNumber_your_turn->display(value); 70 | } 71 | 72 | void CSpeed::on_horizontalSlider_pass_cards_valueChanged(int value) 73 | { 74 | ui->lcdNumber_pass_cards->display(value); 75 | } 76 | 77 | void CSpeed::on_horizontalSlider_animate_pass_cards_valueChanged(int value) 78 | { 79 | ui->lcdNumber_animate_pass_cards->display(value); 80 | } 81 | 82 | void CSpeed::on_horizontalSlider_animate_play_card_valueChanged(int value) 83 | { 84 | ui->lcdNumber_animate_play_card->display(value); 85 | } 86 | 87 | void CSpeed::on_pushButton_save_clicked() 88 | { 89 | mConfig->set_expert_speeds(ui->horizontalSlider_play_a_card->value(), 90 | ui->horizontalSlider_play_2_clubs->value(), 91 | ui->horizontalSlider_shuffle->value(), 92 | ui->horizontalSlider_clear_table->value(), 93 | ui->horizontalSlider_your_turn->value(), 94 | ui->horizontalSlider_pass_cards->value(), 95 | ui->horizontalSlider_animate_pass_cards->value(), 96 | ui->horizontalSlider_animate_play_card->value()); 97 | hide(); 98 | } 99 | -------------------------------------------------------------------------------- /Hearts.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2018-09-30T12:09:16 4 | # 5 | #------------------------------------------------- 6 | 7 | # DEFINES options: 8 | # ------------------------------------------------------------------------------------------------ 9 | # USE_LIBALLEGRO5 10 | # Turn on sounds. liballegro5 libraries must be installed to compile. 11 | # DEBUG 12 | # Enable menu Debug including Cards History, Cards Played and Cheat mode. 13 | # DEBUG_DATAGRAMS 14 | # provide online connection datagrans infos into the information channel. (For coders only) 15 | # FULL_SCREEN 16 | # Enable application main windows resize, and full screen. (BETA) 17 | # ONLINE_PLAY 18 | # Enable online play. 19 | # 20 | # NOTE: If disabled by removing ONLINE_PLAY from DEFINES. The app will compile without online classes, 21 | # variables and functions associated with online play, BUT online icons will still be 22 | # included in the binary. As this option doesn't remove them from resources.qrc, also 23 | # that won't remove them in the help/credits (credits.ui). That must be done manually if required. 24 | # Online buttons, and such will still be present in the UI (mainwindow.ui), but hidden. 25 | # ------------------------------------------------------------------------------------------------ 26 | # NOTE: require a rebuild all when modifing the defines options. (QTCREATOR) 27 | # or on the shell: make clean; qmake Hearts.pro; make 28 | DEFINES += ONLINE_PLAY USE_LIBALLEGRO5 FULL_SCREEN DEBUG 29 | 30 | equals(QMAKE_CXX, g++) { QMAKE_LFLAGS += -no-pie } 31 | 32 | QT += core gui svg 33 | 34 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 35 | 36 | contains(DEFINES, ONLINE_PLAY) { 37 | QT += network 38 | 39 | FORMS += connect.ui \ 40 | online.ui \ 41 | ctable.ui \ 42 | cgame.ui \ 43 | 44 | SOURCES += client.cpp \ 45 | connect.cpp \ 46 | ctable.cpp \ 47 | online.cpp \ 48 | cgame.cpp \ 49 | 50 | HEADERS += client.h \ 51 | connect.h \ 52 | ctable.h \ 53 | online.h \ 54 | cgame.h \ 55 | } 56 | 57 | contains(DEFINES, DEBUG) { 58 | SOURCES += debug.cpp \ 59 | ccardsplayed.cpp \ 60 | 61 | HEADERS += debug.h \ 62 | ccardsplayed.h \ 63 | } 64 | 65 | contains(DEFINES, USE_LIBALLEGRO5) { 66 | unix:!macx: LIBS += -lallegro_audio -lallegro_acodec -lallegro_memfile -lallegro 67 | } 68 | 69 | TARGET = Hearts 70 | TEMPLATE = app 71 | CONFIG += c++11 72 | 73 | TRANSLATIONS = languages/translation_en.ts languages/translation_fr.ts languages/translation_ru.ts 74 | 75 | SOURCES += main.cpp\ 76 | mainwindow.cpp \ 77 | clabel.cpp \ 78 | chearts.cpp \ 79 | config.cpp \ 80 | rules.cpp \ 81 | credits.cpp \ 82 | settings.cpp \ 83 | cdeck.cpp \ 84 | cstatistics.cpp \ 85 | speed.cpp 86 | 87 | HEADERS += mainwindow.h \ 88 | clabel.h \ 89 | chearts.h \ 90 | config.h \ 91 | variants.h \ 92 | rules.h \ 93 | credits.h \ 94 | settings.h \ 95 | define.h \ 96 | cdeck.h \ 97 | cstatistics.h \ 98 | speed.h 99 | 100 | FORMS += mainwindow.ui \ 101 | rules.ui \ 102 | credits.ui \ 103 | settings.ui \ 104 | cstatistics.ui \ 105 | speed.ui 106 | 107 | RESOURCES += \ 108 | resources.qrc 109 | -------------------------------------------------------------------------------- /SVG-cards/white/white_d_a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SVG-cards/tigullio-international/diamond_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /SVG-cards/neoclassical/diamond_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SVG-cards/English/heart_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SVG-cards/white/white_h_a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SVG-cards/English/diamond_2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /SVG-cards/Russian/diamond_2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /SVG-cards/English/spade_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SVG-cards/English/diamond_4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SVG-cards/Russian/diamond_4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SVG-cards/neoclassical/heart_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /debug.cpp: -------------------------------------------------------------------------------- 1 | #ifdef DEBUG 2 | 3 | #include "debug.h" 4 | 5 | #include "assert.h" 6 | #include "chearts.h" 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | CDebug::CDebug(CDeck *d) 14 | { 15 | setWindowTitle(tr("Cards history")); 16 | 17 | setAttribute( Qt::WA_QuitOnClose, false ); 18 | 19 | deck = d; 20 | 21 | box1 = new QHBoxLayout; 22 | 23 | for (int i=0; i<7; i++) { 24 | labels[i] = new QLabel(this); 25 | labels[i]->resize(80, 100); 26 | box1->addWidget(labels[i]); 27 | } 28 | 29 | box2 = new QHBoxLayout; 30 | 31 | for (int i=7; i<14; i++) { 32 | labels[i] = new QLabel(this); 33 | labels[i]->resize(80, 12); 34 | labels[i]->setAlignment(Qt::AlignHCenter | Qt::AlignTop); 35 | box2->addWidget(labels[i]); 36 | } 37 | 38 | QGroupBox *grp1 = new QGroupBox; 39 | grp1->setLayout(box1); 40 | 41 | QGroupBox *grp2 = new QGroupBox; 42 | grp2->setLayout(box2); 43 | 44 | bar = new QScrollBar(Qt::Horizontal, this); 45 | bar->setMaximum(0); 46 | 47 | connect(bar, SIGNAL(valueChanged(int)), this, SLOT(handle_bar(int))); 48 | 49 | layout = new QVBoxLayout(); 50 | layout->addWidget(grp1); 51 | layout->addWidget(grp2); 52 | layout->addWidget(bar); 53 | 54 | setLayout(layout); 55 | 56 | QPalette pal = palette(); 57 | pal.setColor(QPalette::Window, QColor(63, 159, 82)); 58 | pal.setColor(QPalette::WindowText, Qt::black); 59 | setPalette(pal); 60 | 61 | reset(); 62 | 63 | setFixedWidth(600); 64 | setFixedHeight(250); 65 | } 66 | 67 | CDebug::~CDebug() 68 | { 69 | for (int i=0; i<14; i++) 70 | delete labels[i]; 71 | 72 | delete bar; 73 | delete box1; 74 | delete box2; 75 | delete layout; 76 | } 77 | 78 | void CDebug::show_history(int slide) 79 | { 80 | for (int i=0; i<7; i++) { 81 | labels[i]->setPixmap(QPixmap::fromImage(deck->get_img_card(cards[i + ptr_screen - slide])->scaledToHeight(100))); 82 | 83 | if (plr_names[i + ptr_screen - slide]) { 84 | if (!connected && !strcmp(plr_names[i + ptr_screen - slide], "You")) 85 | labels[i+7]->setText(tr("You")); 86 | else 87 | labels[i+7]->setText(plr_names[i + ptr_screen - slide]); 88 | } 89 | else 90 | labels[i+7]->setText(tr("Nobody")); 91 | 92 | if (winners[i + ptr_screen - slide]) 93 | labels[i+7]->setStyleSheet("QLabel { color : white; }"); 94 | else 95 | labels[i+7]->setStyleSheet("QLabel { color : black; }"); 96 | } 97 | } 98 | 99 | void CDebug::save_card(int card, const char *name) 100 | { 101 | if (history_size >= MAX_HISTORY_SIZE) 102 | reset(); 103 | 104 | cards[history_size] = card; 105 | 106 | plr_names[history_size] = name; 107 | 108 | if ((card == empty) || (card == your_turn)) 109 | cards_saved = 0; 110 | else 111 | cards_saved++; 112 | 113 | if (cards_saved == 1) { 114 | suit = card / 13; 115 | best_pos = 3; 116 | best = card; 117 | } else { 118 | if ((card / 13 == suit) && (card > best)) { 119 | best = card; 120 | best_pos = 4 - cards_saved; 121 | } 122 | if (cards_saved == 4) { 123 | cards_saved = 0; 124 | winners[history_size - best_pos] = true; 125 | } 126 | } 127 | 128 | history_size++; 129 | 130 | if (history_size >= 7) { 131 | bar->setMaximum(history_size - 7); 132 | bar->setValue(history_size - 7); 133 | 134 | ptr_screen = history_size - 7; 135 | } else 136 | ptr_screen = 0; 137 | 138 | show_history(0); 139 | } 140 | 141 | void CDebug::reset(bool conn_state) 142 | { 143 | connected = conn_state; 144 | 145 | history_size = 0; 146 | cards_saved = 0; 147 | ptr_screen = 0; 148 | suit = 0; 149 | best = 0; 150 | best_pos = 0; 151 | 152 | bar->setMaximum(0); 153 | bar->setValue(0); 154 | 155 | // show 7 empty cards 156 | for (int i=0; i<7; i++) { 157 | labels[i]->setPixmap(QPixmap::fromImage(deck->get_img_card(empty)->scaledToHeight(100))); 158 | labels[i+7]->setText(tr("Nobody")); 159 | labels[i+7]->setStyleSheet("QLabel { color : black; }"); 160 | } 161 | 162 | // show 7 Nobody as names 163 | for (int i=0; imaximum() - value); 173 | } 174 | 175 | void CDebug::Translate() 176 | { 177 | setWindowTitle(tr("Cards history")); 178 | refresh(); 179 | } 180 | 181 | void CDebug::refresh() 182 | { 183 | show_history(bar->maximum() - bar->value()); 184 | } 185 | 186 | #endif // DEBUG 187 | -------------------------------------------------------------------------------- /SVG-cards/English/club_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SVG-cards/Russian/heart_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SVG-cards/tigullio-international/diamond_4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /SVG-cards/tigullio-international/spade_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /SVG-cards/neoclassical/diamond_2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /SVG-cards/white/white_d_4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SVG-cards/English/diamond_3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /SVG-cards/Russian/diamond_3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /SVG-cards/tigullio-international/diamond_2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hearts 1.9.6 (Linux, C++) 2 | The card game Hearts for QT 5 or 6, and liballegro 5 (for sounds support) 3 | 4 |

You can download Hearts as a snap package from:

5 | 6 | 7 | Get it from the Snap Store 8 |
9 |

Alternatively, you can download an AppImage from https://www.linux-apps.com/p/1275760/ in the files section.

10 |

Or see below "How to build the source code" on your computer.

11 | 12 | ## Game Features: 13 | - Support online and offline game play. 14 | - Support 3 languages. (English, French, Russian). 15 | - Support 8 differents deck: Standard, Nicu (White), English, Russian, Tigullio (Modern), 16 | Tiggullio (International), Mittelater, Neo Classical. 17 | - 12 background images theme: Green, Universe, Ocean, Mt. Fuji, Everest, Desert, 18 | Wooden planks, Wood texture, Wooden floor 2, Overlapping planks 5, 19 | Leaves, Marble. 20 | - Support 5 scores styles: Text only, Hearts (Pink), Hearts (Grey), Suits, Cpu / Human. 21 | - Helps [Rules, Online, Settings, Credits] 22 | - Sounds. 23 | - Easy card selection. (offline only) 24 | - Detect TRAM "The rest are mine" (offline only). 25 | 26 | ## Game Variants [Turn on/off]: 27 | - Queen of spade breaks heart. 28 | - Omnibus. (Jack Diamond -10 pts). 29 | - No Tricks. (Bonus -5 pts). 30 | - New Moon.

(Allow human player who shoot the moon to choose between add 26 pts to the opponents, or 31 | substract 26 pts to his own score).

32 | - Perfect 100. (A player who get the score of 100 pts have his score reduce to 50 pts). 33 | - No Draw. (Disable multiple winners). 34 | 35 | ## Offline Options: 36 | - Undo. 37 | - Animated play. 38 | - Three pre-defined game speed: Slow, Normal, Fast. 39 | - A Customized game speed option (for expert only). 40 | - Autosave/Autoreload of the unfinished game. 41 | - Cheat mode. (Reveal your opponents's cards). 42 | - Cards history. 43 | - Cards played list. 44 | - Complete game statistics. 45 |

and more...

46 |

Note: Undo is only available when it's your turn to play. You must first have played a card before. 47 | No undo available from a saved game. The undo will be purged every round or if you connect to a server. 48 | Not available online. Only 1 undo at a time is possible. e.g: No multiple undos in a row.

49 | 50 | # How to build the source code. 51 | 52 | ## 1. Requirements: 53 | - QT Widget 5 54 | - QT SVG 5 55 | - Liballegro 5 56 | 57 |

NOTE: Version 1.8 and above require at lease 4G of ram to build.

58 |
g++ -c -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DONLINE_PLAY -DUSE_LIBALLEGRO5 -DFULL_SCREEN -DDEBUG -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtSvg -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o qrc_resources.o qrc_resources.cpp
 59 | g++: fatal error: Killed signal terminated program cc1plus
 60 | compilation terminated.
 61 | make: *** [Makefile:902: qrc_resources.o] Error 1
62 | 63 |

If you encounter this message. It means the compiler is running out of Memory and can't build the application. Try to free some memory.

64 | 65 | ## 2. Install requirements: (under ubuntu 16.04) 66 |
 sudo apt-get update
 67 |  sudo apt-get install git
 68 |  sudo apt-get install build-essential
 69 |  sudo apt-get install qt5-default
 70 |  sudo apt-get install liballegro5-dev
 71 |  sudo apt-get install libqt5svg5-dev
72 | 73 |

NOTE: libqt5svg5-dev is required since version 1.7

74 | 75 | ## 3. Download the source code 76 |
 git clone https://github.com/Rescator7/Hearts.git
77 | 78 | ### 3a. Build the code 79 |
 cd Hearts
 80 |  qmake Hearts.pro
 81 |  make
82 | 83 | ### 3b. Install / Execute Hearts 84 |

Please note: There is no "make install" as the binary "Hearts" already contains all the components: icons, sounds, images, etc. It can be run by (from the build directory):

85 | ./Hearts 86 |

87 |

It could be copied to the Desktop (run by double-click Hearts)

88 | cp ./Hearts ~/Desktop 89 |

90 |

Or copied to a "common" binaries's path such as:

91 |
cp ./Hearts /usr/local/bin
 92 | Hearts
93 | 94 | ## 4. Licenses: 95 | - MIT for the software (source code) 96 | - Standard cards deck: https://github.com/htdebeer/SVG-cards/blob/master/LICENSE 97 | - Nicu (white) cards deck: https://creativecommons.org/licenses/publicdomain/ 98 | - Sounds are CC 3.0 and 1.0 99 | - Background images are CC 3.0 and 1.0 100 | - Icons: (read credits) 101 | - READ CREDITS for all the licenses details: https://github.com/Rescator7/Hearts/blob/master/Credits 102 | 103 | ![screenshoot](https://github.com/Rescator7/Hearts/blob/master/screenshot/SCR1-hearts-1.9.jpg) 104 | -------------------------------------------------------------------------------- /SVG-cards/neoclassical/spade_1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SVG-cards/white/white_d_2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /SVG-cards/tigullio-international/diamond_3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SVG-cards/Russian/diamond_5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /SVG-cards/English/diamond_7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | --------------------------------------------------------------------------------