Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 20 Förra gången: GUI: Sammanfattning Fler exempel: KryssEnkat och FotoAlbum Fönster med variabelt antal objekt Idag: Ett stort exempel: spelet tjugoett GUI, så mycket vi hinner av: Utseende: färg, bilder, teckensnitt osv Ange storlek på komponenter (Hur man visar 1- och 2-dimensionella arrayer) (Mer om LayoutManagers. GridBagLayout)
Sammanfattning av allt vi vet Java: grundläggande konstruktioner Typer och variabler Matematiska uttryck In- och utmatning med paketet extra Villkor (if) och loopar (for, while) Arrayer Metoder, metodanrop, parametrar, returvärden Klasser, objekt, konstruktorer, new Klassvariabler och klassmetoder (static) Arv Rekursion
Sammanfattning av allt vi vet Java: bibliotek av paket och klasser String, Math, Vector Grafiska användargränssnitt Att leta i hjälpen
Sammanfattning av allt vi vet Idéer: Objektorientering Inkapsling, informationsgömning Program = modell av verkligheten Objekt sköter sig själva Arv Idéer: Grundläggande programutveckling Först Idé Sen Kod (FISK) Felsökning Kommentarer Programvarans utvecklingsprocess
Regler Varje spelare spelar en omgång En spelares omgång: Dra ett kort i taget, så länge du vill Kortens valörer summeras Ess = 1 eller 14 (det som gynnar spelaren) Knekt = 11 Dam = 12 Kung = 13 Summan bestämmer utgången: > 21 du förlorar och åker ut = 21 du vinner och spelet avslutas < 21 spelet går vidare till nästa spelare Om flera spelare stannar på < 21, vinner den som har mest poäng Vid oavgjort vinner den som spelade sist
Exempel Exempelspel, 2 spelare: Spelare 1 drar i tur och ordning: 3 E 10 4 Nöjd! (3) (3+14=17) (3+1+10=14) (3+1+10+4=18) Spelare 2 drar i tur och ordning: K (13) 2 (13+2=15) 9 (13+2+9=24) Förlust för spelare 2 (24 > 21)
Uppgift Uppgift: skriv program som simulerar tjugoett mellan två spelare: vs människa Spelar först Alla val läses från tangentbordet dator Spelar efter människan Gör sina val intelligent : Slutar så fort den fått minst lika många poäng som människan
Exempelkörning Exempelkörning Valkommen till tjugoett Du fick Spader 7 och har 7 poang Ett kort till? j Du fick Klover 10 och har 17 poang Ett kort till? n Datorn fick Hjarter 4 Datorn fick Spader Ess Datorn har 18 poang Du forlorade! Nytt parti? j Du fick Ruter 10 och har 10 poang Ett kort till? j Du fick Spader Knekt och har 21 poang Du vann! Nytt parti? j
Idé klasser Klasser: Tjugoett (huvudprogram) Spelare (håller reda på hand och poäng) Dator (spelar när det är datorns tur) Manniska (spelar när det är människans tur) Kortbunt (en hög av 0 52 stycken spelkort) Kort (ett spelkort; har valör och färg)
Idé huvudklass Klassen Tjugoett Samordnar spelet Talar om för varje spelare när det är dess tur Avgör vem som vinner genom att läsa av spelarnas poängställning Varje spelare sköter själv sin omgång Har / känner till (skillnaden är liten) Kortlek Två olika spelare
Idé spelarklasser Klassen Spelare Har: Sin egen hand Sina egna poäng Känner till: En kortlek ( utanför sig själv ) Referens till den gemensamma leken Metod för att ta kort från leken Inga objekt av klassen spelare skapas! Används endast som basklass för en människo-klass och en dator-klass.
Idé spelarklasser Klassen Manniska Är: en sorts Spelare Metod för att låta spelaren spela en omgång läser in val från tangentbordet Klassen Dator Är: en sorts Spelare Metod för att låta datorn spela en omgång drar automatiskt kort tills den är nöjd Känner till: en människa så att den vet när den ska sluta dra kort
Idé kortklasser Klassen Kortbunt Har: upp till 52 kort antalet kort kvar i bunten Finns tre stycken: spelarnas händer + högen Metoder för att: dra det översta kortet slänga alla kort ta en ny lek med 52 kort blanda alla kort Klassen Kort Håller reda på ett spelkort Har: färg, valör