# Programmering 2 Uppgiftsblad Arv 1. **Lärare och elev** Skapa en grundklass `Person` med attribut som namn och ålder. Utvidga denna klass för att skapa två subklasser: `Student` och `Teacher`. Lägg till egenskaper specifika för varje underklass, som årskurs för `Student` och ämne för `Teacher`. Skapa instanser av varje klass och skriv ut deras detaljer. 2. **RPG Karaktärer** Skapa en grundklass `Character` med attribut som namn, hälsa och nivå. Utvidga denna klass för att skapa specifika karaktärsklasser som `Warrior`, `Wizard` och `Rouge`. Varje klass bör ha unika attribut och metoder som printar vad de gör. Skapa instanser av varje klass och demonstrera deras förmågor. 3. **Former** Skapa en grundklass `Shape` med attributet färg. Utvidga denna klass för att skapa subklasser för specifika former: `Circle`, `Rectangle` och `Triangle`. Implementera metoder för att beräkna arean för varje form. Skapa objekt av varje form, beräkna och visa deras ytor. 4. **Sten sax påse spelare** Utgå från följande kod för att bygga ett litet sten-sax-påse spel. * Skapa en klass `Player` som innehåller ett attribut som heter `score` och en metod `makeMove` som returnerar en string ("rock", "paper", eller "scissors"). * Implementera metoden så att den returnerar ett slumpmässigt resultat. * Skapa en ny klass `HumanPlayer` som extendar `Player` och "overida" metoden `makeMove` så att den istället använder en scanner så användaren får skriva in vilket drag den ska göra. ```java public class RockPaperScissors { Player botPlayer = new Player(); HumanPlayer humanPlayer = new HumanPlayer(); public static void main(String[] args) { RockPaperScissors game = new RockPaperScissors(); game.run(); } void run(){ System.out.println("Rock paper scissors"); System.out.println("-------------------"); System.out.println("First to 5 points win!"); while(botPlayer.score < 5 && humanPlayer.score < 5){ String botMove = botPlayer.makeMove(); String humanMove = humanPlayer.makeMove(); int result = result(botMove, humanMove); if (result == 0){ System.out.println("Bot scored"); botPlayer.score++; }else if (result == 2){ System.out.println("Human scored"); humanPlayer.score++; } } if(botPlayer.score > humanPlayer.score){ System.out.println("The bot won!"); }else{ System.out.println("The human won!"); } } int result(String p1Move, String p2Move){ if (p1Move.equals(p2Move)){ return 1; } if ((p1Move.equals("rock") && p2Move.equals("scissors")) || (p1Move.equals("paper") && p2Move.equals("rock")) || (p1Move.equals("scissors") && p2Move.equals("paper"))) { return 0; } else { return 2; } } } ``` 5. **Frågesportsspel** Bygg ett litet frågesportsspel som ställer frågor och kollar om man svarar rätt. Programmet ska använda sig av en superklass `Question` som innehåller: * En String för frågan * En String för korrekt svar * En metod `printQuestion()` som skriver ut frågan. * En metod `boolean checkAnswer(String answer)` som returnerar sant om `answer` är korrekt och falskt om det är fel. Skapa sedan följande subklasser till `Question`: * `MultipleChoiceQuestion` som overidar `printQuestion` och skriver ut svarsalternativ * `YesNoQuestion` som man bara kan svara "yes" eller "no" på. * `NumberQuestion` som man bara kan svara med en siffra, och korrekt svar är inom ett givet intervall. * Fler subklasser om du kan komma på fler varianter på quiz-frågor.