Patiens: De 40 rövarna

Sven-Olof Nyström
OOP med Java våren -25
Informationsteknologi
Uppsala Universitet

Patiens: De 40 rövarna

Din uppgift är att implementera patiensen "De 40 rövarna". Spelreglerna beskrivs i detta dokument.

Ett enkelt spel

Jag har lagt upp ett enkelt patiensspel: simple. Min avsikt är att du ska använda programmet som utgångspunkt i din lösning. Här finns klasser som implementerar spelkort, klasser för olika typer av högar och en mekanism för att flytta kort mellan olika positioner.

Notera filen 00README.

Så här kan det se ut när man flyttat några kort:

(Vänligen bortse från knapparna upptill.) Notera att jag har följt reglerna som jag anger under rubriken "enklare spel" nedan.

Objektorientering och polymorfi

Jag vill se en lösning i objektorienterad stil. Utnyttja klasser och arv för de olika högarna. Flytta intelligens, datastrukturer och funktionalitet från huvudklassen till klasserna som representerar högarna. Eftersom olika korthögar fungerar olika behöver vi olika klasser för olika korthögar. Använd polymorfi.

Implementation

Jag tänker mig att uppgiften ska lösas med repaint() och paintComponent(), ungefär som uppgift 3. Det är så jag själv har löst uppgiften. Jag vet inte hur svårt det är att lösa uppgiften om du går en annan väg.

Jag ställer dock inga krav på att uppgiften ska lösas som jag har tänkt, men om du gör ingrepp i den givna koden (eller skriver ett eget ramverk) bör du förstås beskriva dina ändringar i rapporten.

Enklare spel

Enligt beskrivningen ska man bygga neråt i färg på de fria korten. För att göra spelet lite mer lättspelat får du (om du vill) tillåta att man istället bygger neråt i alternerande färg, dvs lägger ett rött kort (hjärter eller ruter) på ett svart kort (spader eller klöver). Berätta hur du gör.

Är det tillåtet att flytta ett kort som man redan lagt i en äss-hög? Det framgår inte av beskrivningen. Du kan tillåta det också, om du vill, men berätta hur du gör.

Tips

Frågor

Uppgiften är ny för i år. Om nåt är oklart i uppgiftsspec eller i den länkade beskrivningen, säg till.

En liten film, igen

Här hittar du en liten film (25-03-27) en liten film som kanske kan vara till hjälp.

Notera att de svarta ringarna som visas skapades av programmet som jag använde för inspelningen. De visar var jag klickade. Din lösning behöver inte rita dem.