Du ska skapa en databehållaren av typen dictionary. Du ska sedan fylla denna behållare med shackpjäser. Ett alternativ för att representera pjäserna är olika bokstavskombinationer för att representera de olika pjäserna, exempelvis skulle strängen "sb" kunna representera en svart bonde. Ett annat alternativ är att använda de olika unicode tecknen för shackpjäserna (mycket roligare!), du kan hitta koderna för detta om du söker efter "unicode chess characters".
Detta shackbräde ska skapas, ritas ut och modifieras med ett antal funktioner. En beskrivning av de olika funktionerna hittar du nedan:
- create_board() - Denna funktion tar inga parametrar och returnerar ett shackbräde (en python dictionary med passande nycklar och tomma värden)
- print_board() - Denna funktion tar ett spelbräde som parameter och skriver ut brädet på ett snyggt sätt. Har inget returvärde.
- place_piece() - Denna funktion tar emot en shackpjäs, ett spelbräde, en bokstav och en siffra. Spelbrädet uppdateras sedan så att pjäsen står på platsen som bokstaven och siffran indikerar. Eventuellt föregående pjäser på den platsen försvinner. Funktionen returnerar sedan det uppdaterade brädet.
- pickup_piece() - Denna funktion tar emot ett spelbräde, en bokstav och en siffra. Spelbrädet uppdateras sedan så att platsen som bokstaven och siffran indikerar töms. Funktionen returnerar sedan brädet och pjäsen som stod på platsen, i det fall ingen pjäs stod på den angivna platsen returneras ett oförändrat spelbräde och None.
- reset_board() - Denna funktion tar ett shackbräde som parameter och stoppar in alla 36 pjäser på sina startpositioner
Skriv sedan ett program som testar att dessa funktioner fungerar som förväntat
Gör det svårare (arbeta mot ditt eget fungerande schackspel)
Denna uppgift kan du fortsätta arbeta med till du har ett fungerande shackspel som du faktiskt kan spela med dig själv eller andra. Komplett med kontroll av reglerna i spelet! Om du inte orkar riktigt dit (det är ganska mycket att göra) så kan du testa på att lösa några av de föreslagna funktionerna nedan:
- move_piece() - Denna funktion använder funktionerna pickup_piece() och place_piece() ovan för att flytta en pjäs från en ruta till en annan. Funktionen tar 2 bokstäver och siffror (från ruta och till ruta) och en spelplan. Funktionen returnerar sedan spelplanen efter förflyttningen är färdig.
- get_move() - Ber användaren om ett drag. Funktionen tar ett spelbräde som parameter och returnerar de två bokstäverna och siffrorna som utgör spelarens drag. Kan i framtiden använda funktionen is_valid_move() för att rimlighetskontrollera användarens inmatning
- is_valid_move() - Denna funktion tar 2 bokstäver och siffror (från ruta och till ruta) och ett spelbräde. Funktionen returnerar sedan om pjäse som står på "från rutan" kan flytta till den andra rutan. OBS detta kräver att du skriver kontroller för hur de olika pjäserna kan flytta sig.
- has_won() - Denna funktion tar en spelare, vit eller svart, och kontrollerar om den spelaren har vunnit spelet. Funktionen returnerar sant om motståndarens kung är i shackmatt. Kan göras enklare om man spelar tills någon tar motståndarens kung.
- ...
Sidansvarig: Pontus Haglund
Senast uppdaterad: 2024-08-14