SquaresInleiding
Squares wordt gespeeld door twee spelers op een bord van Het doel van het spel is om vierkanten met hoekpunten van je eigen kleur te vormen. Alleen vierkanten die evenwijdig zijn met de randen van het bord tellen mee. Grotere vierkanten leveren meer punten op, zie hieronder. Het spel gaat door tot er geen tegels meer op het bord geplaatst kunnen worden. De speler met de meeste punten wint. Het bordDe twaalf rijen worden aangeduid met de hoofdletters A tot en met L. De twaalf kolommen met de kleine letters a tot en met l. De tegelDe tegels in dit spel zijn allemaal vierkant en hebben precies 4 verschillende kleuren in een specifieke volgorde. Je mag de tegels draaien. Dit wordt aangegeven met een cijfer 0..3, 0 betekent geen draaiing, 1 betekent 90 graden met de klok mee, etc. Hieronder staan alle 4 draaiingen van de tegel "1234" aangegeven: Figuur 1. Alle draaiingen van de tegel "1234". Als een speler aan de beurt is krijgt hij van de jurysoftware een gegenereerde tegel aangeboden met de vier cijfers 1,2,3,4 in willekeurige volgorde. Die leest hij in van standard input. Het eerste cijfer geeft de kleur linksboven aan voor de ongedraaide tegel, daarna ga je met de klok mee voor de andere kleuren. De speler mag zelf de draaiing van de tegel bepalen en doet dit door een cijfer 0, 1, 2 of 3 achter de tegel te plakken. Het begin van het spelBeide spelers ontvangen eerst van standard input hun geheime kleur. Er wordt een starttegel gegenereerd, die in het midden van het bord wordt geplaatst. De cel linksboven van de starttegel komt dan op plek Ff. Zie figuur 2 tegel "42130". De volgorde van de kleuren in dit voorbeeld is 4123, deze cijfers worden geplaatst met de wijzers van de klok mee, te beginnen met de 4 op positie Ff. De laatste 0 geeft aan dat de tegel niet is gedraaid. Vervolgens lees je opnieuw een regel van standard input. Als op die regel het woord "Start" staat speel je als speler 1, anders bevat de regel de eerste zet van speler 1 en speel jij daarna als speler 2. Een zet doenDe speler moet de tegel op het bord plaatsen. Er mag een overlap zijn met al geplaatste tegels van maximaal 1 cel. De kleur van de laatst geplaatste tegel geldt; het kan daarom zijn dat een al eerder gevormd vierkant verdwijnt omdat een hoekpunt een andere kleur krijgt. Als er geen overlap is, moet de tegel ergens worden aangesloten op de reeds geplaatste tegels. Minstens één van de cellen van de nieuw geplaatste tegel moet zich naast een andere gevulde cel van de groep tegels bevinden, horizontaal of verticaal. De startspeler ontvangt na het woord "Start" een nieuw gegenereerde tegel. Het is aan de speler hoe hij deze op de bestaande tegel aansluit. Hij heeft in de beginsituatie in totaal 64 opties om dit te doen; ga dat zelf na. Je programma heeft in totaal 30 seconden voor een spel. De tijd dat de tegenstander denkt telt daarbij niet mee. In figuur 2 is de gegenereerde eerste tegel "4213" ongedraaid op Ff geplaatst. Speler 1 ontving tegel "4132" die hij ongedraaid op Eg heeft geplaatst. Dat geeft speler 1 aan door op standard output de regel "Eg0" uit te voeren. Speler 2 krijgt dit te lezen als "Eg41320". Vervolgens werd de tegel "1423" aan de tweede speler gegeven en plaatste hij deze als "Di14231". Zo gaat dat verder. Figuur 2. Voorbeeld eerste zetten. Als een speler een foute zet doet, crasht, als het programma stopt voor het spel is afgelopen of teveel bedenktijd gebruikt (je programma heeft 30 seconden voor een spel), krijgt hij een "Quit" van de jurysoftware en neemt de jury zijn beurten over. De jurysoftware speelt alleen willekeurig gegenereerde zetten. Als er geen tegels meer kunnen worden geplaatst is het spel afgelopen. Dan krijgt elke speler een "Quit" op zijn standaard input. Voorbeeld communicatie bij figuur 2.
Punten voor vierkanten
Elk vierkantje van je eigen kleur is aan het eind van het spel punten waard.
Een vierkant van Uitslag van het spelDe winnaar krijgt 200 punten plus het verschil in scorepunten. De verliezer krijgt 100 punten minus het verschil. Bij een gelijke stand ontvangen beide spelers 150 punten. Als het verschil groter is dan 100 punten, krijgt de verliezer geen punten. In dat geval krijgt de winnaar meer dan 300 punten. Figuur 3. Speler 2 scoort 4 punten door het vierkant Bg-Bk-Fg-Fk te maken met geheime kleur geel (2). In- en uitvoerJe programma leest van standard input en schrijft naar standard output. Denk eraan dat je na iedere regel de uitvoer flusht. Zie hiervoor de technische regels. Als je programma als invoer de regel "Quit" krijgt moet je programma worden afgesloten. Je programma mag informatie wegschrijven naar standard error. Je kunt als het spel gespeeld is na een testcompetitie gebruik maken van deze informatie. Punten voor de olympiadeAls je programma samenwerkt met onze jurysoftware wordt het toegelaten tot het toernooi. In dat geval verdien je 20 punten voor deze opgave. Als je programma zonder fouten speelt kun je daarmee nog eens 50 punten verdienen. De uitslag van dat toernooi is bepalend voor de laatste 30 punten; hoe hoger je programma eindigt, des te meer punten krijg je. Inzenden van je programma gaat op nio.codecup.nl waar je eerst een account moet aanmaken. VerantwoordingSquares is een bordspel waarvan het principe bedacht is door Chris Handy. Zie: https://www.perplext.com/packogame/box. |