Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Reversi, een Othello variant in Qt  (gelezen 7399 keer)

`GooZ

  • Gast
Reversi, een Othello variant in Qt
« Gepost op: 2007/12/23, 18:47:01 »
We moesten op de unief als project voor c++ in het 2e jaar een klein spelletje ontwikkelen. Ik en mijn projectpartner kozen voor (een cross-platform) Reversi. De meesten zullen hier niet veel aan hebben (zowel in Gnome als in KDE is standaard een reversi variant te vinden), maar het heeft toch enkele leuke extra's, zoals:

- Een niet-afgespeeld spel wordt automatisch opgeslagen als het spel wordt gesloten, en wordt automatisch ingeladen de volgende keer dat het spel gestart wordt.
- Highscores: Het procentueel aantal gewonnen spelletjes wordt bijgehouden.
- Mogelijke zetten worden weergegeven als de gebruiker een foutieve zet doet.
- De grootte van het spelbord is aanpasbaar.
- Ook in commandlinemodus te spelen: Hiervoor start je het spel als./reversi --cli [-s ]De -s parameter is dus niet verplicht.
- Automatische aanvulling van spelernamen.
- Undo/Redo functionaliteit.

Nadelen tov de standaard varianten:
- Geen computerspeler (is eventueel nog te implementeren dankzij de uitbreidbaarheid van onze code, maar hebben we niet geimplementeerd gezien we weinig tijd hadden voor ons project.
- Er zullen er nog wel zijn ;)


De executable (statisch voor linux) kan hier gevonden worden: http://reversi-school.googlecode.com/files/linux-static-386

De source zit in onze SVN: http://code.google.com/p/reversi-school/source

En andere info en downloads kunnen hier gevonden worden: http://code.google.com/p/reversi-school/


Nog snel een screenshot:


Ook van de CLI versie:

Offline bartek

  • Lid
    • http://bartek.blogsome.com
Reversi, een Othello variant in Qt
« Reactie #1 Gepost op: 2007/12/23, 19:00:40 »
Dat ga ik eens even testen zie ... nu nog een tegenstander vinden.
Hoe start je het spel op?  (/me klinkt nu weer stom ;))
| Deliberando saepe perit occasio |

"Car la vie est un bien perdu quand on n'a pas vécu comme on l'aurait voulu"

Reversi, een Othello variant in Qt
« Reactie #2 Gepost op: 2007/12/23, 19:18:03 »
Ziet er leuk uit, ik ga 't zeker eens proberen (en de broncode uitpluizen)
Ik hou wel van CLI spelletjes, reversi voor cli heb ik niet gevonden tot nu toe. En de QT code kan ik ook gebruiken, nu ik C++/QT aan het leren ben.

Toch heb ik nog wat vragen:
1) Welke versie van QT is hier gebruikt? Het ziet eruit als QT4
2) Je weet toch dat iedereen hier Gnome (=GTK) gebruikt? :)

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

`GooZ

  • Gast
Reversi, een Othello variant in Qt
« Reactie #3 Gepost op: 2007/12/23, 19:53:39 »
1) Het is inderdaad QT4
2) Inderdaad, maar de opgave was dat we het in Qt moesten maken :) Plus, het is statisch gecompileerd, dus je moet Qt normaal gezien (als alles goed zit) niet eens geïnstalleerd hebben om het te kunnen runnen.

`GooZ

  • Gast
Reversi, een Othello variant in Qt
« Reactie #4 Gepost op: 2007/12/23, 19:56:06 »
Citaat van: bartek
Hoe start je het spel op?  (/me klinkt nu weer stom ;))
Het spel starten doe je gewoon door ./linux-static-386 (of hoe je het bestand ook genoemd hebt nadat het gedownload was).
Als hij daarbij zegt dat het geen uitvoerbaar bestand is moet je eerst nog even chmod +x linux-static-386 doen.

Offline profoX

  • Lid
    • wesley
    • Lionslink
Reversi, een Othello variant in Qt
« Reactie #5 Gepost op: 2007/12/23, 23:21:56 »
`GooZ: op welke universiteit/hogeschool zit je? :) Qt 4 programmeren op school is hemels ;)

SeySayux: ik gebruik voornamelijk KDE en programmeer cross-platform apps in niets anders dan Qt 4. En ik ken nog mensen op dit forum die KDE gebruiken, dus je statement klopt niet :)
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

`GooZ

  • Gast
Reversi, een Othello variant in Qt
« Reactie #6 Gepost op: 2007/12/23, 23:23:41 »
Citaat van: profoX
`GooZ: op welke universiteit/hogeschool zit je? :)
Universiteit Hasselt, alwaar ik in mijn 2e jaar Informatica zit: http://www.uhasselt.be/stgids/opbouw.aspx?i=191

Offline profoX

  • Lid
    • wesley
    • Lionslink
Reversi, een Othello variant in Qt
« Reactie #7 Gepost op: 2007/12/23, 23:41:20 »
Nice. Misschien dat ik daar volgend jaar ga studeren :)

Ik heb jullie Reversi game eventjes bekeken en dat ziet er goed uit. Ik moet het nog testen, maar jullie code ziet er netjes uit :) En jullie gebruiken Doxygen voor de API documentatie. Prachtig.

Ik vind het wel jammer dat jullie geen Designer (Qt 4's Designer) hebben gebruikt voor het ontwerpen van de grafische interface in Qt 4. Is daar een reden voor?

Ook zijn de "Core" en "Cli" mappen leeg bij mij (svn checkout).. is dat normaal?

Maar euh, prachtig werk :) de code is erg netjes en OO. Misschien heb je wel zin gekregen om mee te werken aan KReversi 4? ;) Het is zo goed als af, maar je zou bv. animaties kunnen toevoegen aan KReversi 4 door middel van de QTimeLine en QPainter classes :) (hoewel ik van dat laatste niet zeker ben; indien KReversi 4 QGraphicsScene gebruikt zou je misschien QGraphicsItemAnimation kunnen gebruiken) ...of gewoon eens kijken of er nog bugs moeten gefixt worden in KReversi 4.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

`GooZ

  • Gast
Reversi, een Othello variant in Qt
« Reactie #8 Gepost op: 2007/12/23, 23:57:28 »
Citaat van: profoX
Nice. Misschien dat ik daar volgend jaar ga studeren :)
Ik ben alvast zeer tevreden van onze unief :) Al ga ik mijn master waarschijnlijk wel in Leuven doen (zodat ik op kot kan enzo ;))

Citaat van: profoX
Ik heb jullie Reversi game eventjes bekeken en dat ziet er goed uit. Ik moet het nog testen, maar jullie code ziet er netjes uit :) En jullie gebruiken Doxygen voor de API documentatie. Prachtig.
Bedankt. En Doxygen hebben we geleerd in het 2e trimester van het 1e jaar, is echt superhandig om relaties tussen klassen (en files) aan te duiden bij de presentatie van het project :)

Citaat van: profoX
Ik vind het wel jammer dat jullie geen Designer (Qt 4's Designer) hebben gebruikt voor het ontwerpen van de grafische interface in Qt 4. Is daar een reden voor?
Ja, en dat is dat we eigenlijk maar 1 dag hadden om te leren werken met Qt. We hebben hierbij de designer wel gezien, maar zoals je zelf ook merkt (let op het feit dat al onze velden knoppen zijn ;)) zijn we nog zeker geen experts met Qt. We wilden ook een dynamische spelbordgrootte en wisten niet goed hoe we dat voor elkaar zouden moeten krijgen met de designer (als we dan eens de Qt code zouden aanpassen zouden we ze niet opnieuw met de designer kunnen bewerken).

Citaat van: profoX
Ook zijn de "Core" en "Cli" mappen leeg bij mij (svn checkout).. is dat normaal?
Dat lijkt me niet. Kan je compileren? Want normaal gezien zit alle spelfunctionaliteit zelf in de "Core" map. Maar het zou natuurlijk kunnen dat er iets four gelopen is bij de svn copy (tot daarstraks stond het project nog op onze eigen SVN, we hebben deze ge-export naar die van Google Code). Zou je dus even kunnen melden of je kan compileren en je alle bestanden hebt? Bedankt :)

Citaat van: profoX
Maar euh, prachtig werk :) de code is erg netjes en OO. Misschien heb je wel zin gekregen om mee te werken aan KReversi 4? ;) Het is zo goed als af, maar je zou bv. animaties kunnen toevoegen aan KReversi 4 door middel van de QTimeLine en QPainter classes :) (hoewel ik van dat laatste niet zeker ben; indien KReversi 4 QGraphicsScene gebruikt zou je misschien QGraphicsItemAnimation kunnen gebruiken) ...of gewoon eens kijken of er nog bugs moeten gefixt worden in KReversi 4.
Alleszins eerst vakantie nemen, die heb ik wel nodig na een trimester vol met Algoritmen & Datastructuren, C++ en Statistiek ;)

Offline profoX

  • Lid
    • wesley
    • Lionslink
Reversi, een Othello variant in Qt
« Reactie #9 Gepost op: 2007/12/24, 00:11:07 »
Citaat van: `GooZ
De executable (statisch voor linux) kan hier gevonden worden: http://reversi-school.googlecode.com/files/linux-static-386
Die kan je toch gewoon +x chmodden en uitvoeren? Of niet?
Citaat
wesley@zenx:~/dev/reversi-gooz$ ./linux-static-386
QObject::moveToThread: Current thread (0x872f5c0) is not the object's thread (0x86fc458).
Cannot move to target thread (0x86fc458)

QObject::setParent: Cannot set parent, new parent is in a different thread
QPixmap: Must construct a QApplication before a QPaintDevice
Aborted (core dumped)
Citaat van: `GooZ
Dat lijkt me niet. Kan je compileren? Want normaal gezien zit alle spelfunctionaliteit zelf in de "Core" map. Maar het zou natuurlijk kunnen dat er iets four gelopen is bij de svn copy (tot daarstraks stond het project nog op onze eigen SVN, we hebben deze ge-export naar die van Google Code). Zou je dus even kunnen melden of je kan compileren en je alle bestanden hebt? Bedankt :)
Ik zie geen configure script of Qt project file, ik gok dat we dat zelf moeten maken op de standaardwijze alvorens te compileren? qmake-qt4 -project && qmake-qt4 && make? Dan krijg ik het gecompileerd, maar dan werkt het programma niet zoals het zou moeten bij mij.. Bij de GUI versie kan ik enkel op wat van die knoppen (plaatsen op het bord) klikken, maar die doen niets, die lichten gewoon op. Bij het afsluiten van het programma krijg ik een segfault.

De CLI versie werkte zelfs helemaal niet, in main.cpp moest ik argv[0] eerst vervangen door argv[1], want argv[0] is hoe je het programma uitvoert (./reversi-gooz) maar nadat ik dat had aangepast kreeg ik telkens maar een veld van 0 tot 2 (3 x 3 dus) ook als ik de -s parameter aanpas. Ik heb ook geen code gevonden die de "-s" parameter afhandelde..

Dus mij lijkt het dat deze svn checkout niet helemaal juist is. Want op jouw screenshots werkt het allemaal wel goed.

--- edit ---

Citaat van: `GooZ
Citaat van: profoX
Ik vind het wel jammer dat jullie geen Designer (Qt 4's Designer) hebben gebruikt voor het ontwerpen van de grafische interface in Qt 4. Is daar een reden voor?
Ja, en dat is dat we eigenlijk maar 1 dag hadden om te leren werken met Qt. We hebben hierbij de designer wel gezien, maar zoals je zelf ook merkt (let op het feit dat al onze velden knoppen zijn ;)) zijn we nog zeker geen experts met Qt. We wilden ook een dynamische spelbordgrootte en wisten niet goed hoe we dat voor elkaar zouden moeten krijgen met de designer (als we dan eens de Qt code zouden aanpassen zouden we ze niet opnieuw met de designer kunnen bewerken).
Designer is zeer flexibel, hoor :) Je moet gewoon de basis-layout in Designer maken en dan de knopjes voor het spelbord niet met Designer doen, maar die toevoegen via de code, zoals je nu doet. Designer en code gaan hand in hand samen, hoor. Bij Qt 4 is code en design meer van elkaar gescheiden dan bij Qt 3. Designer genereert gewoon een .ui (XML) bestand dat door uic (user interface compiler, van Qt 4) wordt vertaald naar C++. Je kan dan gewoon een bepaald header-bestand includen in je GUI implementatie en op die manier via code communiceren met de interface die naar C++ werd gecompileerd door uic. Mijn uitleg is misschien niet de beste, maar kijk hier gewoon even :) http://doc.trolltech.com/4.3/designer-using-a-component.html
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Reversi, een Othello variant in Qt
« Reactie #10 Gepost op: 2007/12/24, 09:17:17 »
ProfoX: ik ken ook nog mensen die KDE gebruiken, zoals ikzelf onderandere :). Je moet wel toegeven dat de meeste mensen hier Gnome gebruiken, dat de KDE-gebruikers hier sterk in de minderheid zijn, wat logisch is, Ubuntu is een Gnome-distributie.
En je klinkt nogal nerdy ;) Nu ja, ik ben ook een cursus QT aan het volgen, dus binnenkort kan ik meepraten. Spijtig dat ik van programmeertalen alleen Java ken... C++ is vrij moeilijk, en een goede "noob" handleiding in het nederlands heb ik nog niet gevonden... Alhoewel de KDE handleidingen vrij gemakkelijk zijn. De meeste handleidingen C++ die ik tegenkom verwachten dat je Unix, Dos of CP/M draait. En ze verwachten ook dat je weet hoe een processor en het RAM-geheugen werkt. Ze gaan zeer snel erdoor, zonder goed bij de 'basis' te beginnen. Ik heb hier C++ van Leen Ammeraal gelezen, die springt van hot naar her, niet genoeg voorbeelden, en is al 10 jaar oud. Programmeren in C++ van Brian Strostrup is vrij technisch en dik, veel uitleg op beginner-niveau wordt er niet gegeven, eerder extra techtalk om het moeilijk te maken. Het is niet omdat je alles van een programmeertaal kent omdat je ze hebt uitgevonden, dat je moet verwachten dat andere mensen ook het kleinste chipje op een moederbord kunnen benoemen.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline profoX

  • Lid
    • wesley
    • Lionslink
Reversi, een Othello variant in Qt
« Reactie #11 Gepost op: 2007/12/24, 10:45:28 »
SeySayux: ik raad het boek (e-book is legaal gratis te vinden op het internet; edit: althans dat dacht ik, maar het is niet te downloaden op de website van Prentice Hall... er staat echter wel in het boek zelf, en op de website "Each book in the series is published under the Open Publication License (www.opencontent.org), an open source compatible book license, which means that electronic versions will be made available at no cost after the books have been in print for six months." en het boek werd uitgegeven in augustus 2006..) "An Introduction to Design Patterns in C++ with Qt 4" aan. Dat boek leert je om netjes object-geörienteerd te programmeren. Het leert je enkel de C++ die je nodig hebt om deftig te kunnen werken met Qt 4, en niet meer dan dat. Je moet wel een andere programmeertaal kennen vooraleer je met dit boek aan de slag kunt (als je Java goed genoeg kent is dat prima). Het boek zelf is ongeveer een jaar oud en gebruikt Qt 4.1 als ik me niet vergis. De huidige versie van Qt is Qt 4.3, maar bijna alles wat je leert werkt zonder aanpassingen nog steeds in Qt 4.3. Boek is wel enkel in het Engels. Een ander nadeel aan het boek is dat de oefeningen en 'review questions' geen oplossingen bevatten... Er is wel een "Solutions and Instructor's Guide" op het internet, maar die kan je niet openen zonder wachtwoord. http://cartan.cas.suffolk.edu/moin/OopDocbookWiki

Het boek van Bjarne Stroustrup is niet voor beginners, het is eerder een volledige C++ referentie van de uitvinder van C++ himself. Met andere woorden een dik, saai boek.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Reversi, een Othello variant in Qt
« Reactie #12 Gepost op: 2007/12/24, 10:55:24 »
Bedankt profoX, maar ik heb slechts dit gevonden op die website: http://cartan.cas.suffolk.edu/oopdocbook/quickref/ . Ik denk dat dit slechts een gedeelte is van het boek. Ik zal er in ieder geval al eens naar kijken.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline Double12

  • Lid
Reversi, een Othello variant in Qt
« Reactie #13 Gepost op: 2007/12/27, 11:54:01 »
Citaat van: SeySayux
ProfoX: ik ken ook nog mensen die KDE gebruiken, zoals ikzelf onderandere :). Je moet wel toegeven dat de meeste mensen hier Gnome gebruiken, dat de KDE-gebruikers hier sterk in de minderheid zijn, wat logisch is, Ubuntu is een Gnome-distributie.
En je klinkt nogal nerdy ;) Nu ja, ik ben ook een cursus QT aan het volgen, dus binnenkort kan ik meepraten. Spijtig dat ik van programmeertalen alleen Java ken... C++ is vrij moeilijk, en een goede "noob" handleiding in het nederlands heb ik nog niet gevonden... Alhoewel de KDE handleidingen vrij gemakkelijk zijn. De meeste handleidingen C++ die ik tegenkom verwachten dat je Unix, Dos of CP/M draait. En ze verwachten ook dat je weet hoe een processor en het RAM-geheugen werkt. Ze gaan zeer snel erdoor, zonder goed bij de 'basis' te beginnen. Ik heb hier C++ van Leen Ammeraal gelezen, die springt van hot naar her, niet genoeg voorbeelden, en is al 10 jaar oud. Programmeren in C++ van Brian Strostrup is vrij technisch en dik, veel uitleg op beginner-niveau wordt er niet gegeven, eerder extra techtalk om het moeilijk te maken. Het is niet omdat je alles van een programmeertaal kent omdat je ze hebt uitgevonden, dat je moet verwachten dat andere mensen ook het kleinste chipje op een moederbord kunnen benoemen.

- SeySayux
Ik weet niet of je zin hebt om geld uit te geven voor een boek, als dat wel zo is heb ik hier een tip.
Ik heb tot nu toe ervaring met "C++ voor Dummies" en "Aan de slag met C++".

"C++ voor Dummies" is iets meer op de GNU-compiler gericht, "Aan de slag met C++" meer op Windows. Maar dat is geen probleem.
"Aan de slag..." gebruikt wat meer voorgeprogrammeerde functies, "...Dummies" laat je liever eerst zelf een functie schrijven om iets te doen.
"Dummies" maakt wat meer flauwe grapjes (Amerikaanse schrijver...), "Aan de slag" maakt geen grapjes (Nederlandse schrijver).

Ik ben pas op het begin van beide boeken, tot nu toe waren ze beide goed doorheen te komen.

Offline profoX

  • Lid
    • wesley
    • Lionslink
Reversi, een Othello variant in Qt
« Reactie #14 Gepost op: 2007/12/27, 12:13:57 »
Citaat van: Double12
Ik ben pas op het begin van beide boeken...
Jij leest tegelijkertijd twee boeken over C++? :)
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Double12

  • Lid
Reversi, een Othello variant in Qt
« Reactie #15 Gepost op: 2007/12/27, 14:09:26 »
Citaat van: profoX
Citaat van: Double12
Ik ben pas op het begin van beide boeken...
Jij leest tegelijkertijd twee boeken over C++? :)
Nee, begin gemaakt in "Dummies" van de bieb, weer teruggebracht en heb nu zelf "aan de slag" waar ik in ben begonnen.