Schweinchen (Schleifen)
Schweinchen ist ein Würfelspiel, das in deiner Region sicher ähnlich oder ganz anders heißt.
Die Regeln sind allerdings denkbar einfach:
- Gespielt wird mit einem normalen (sechsseitigen) Würfel. Ziel des Spieles ist, als Ersty 100 Punkte zu erreichen.
- Es wird reihum gewürfelt.
- Ist ein Spiely an der Reihe, würfelt ette mindestens einmal. Augenzahlen von 2–6 werden in dieser Runde gutgeschrieben und ette hat die Option, noch einen Wurfversuch hinzuzufügen.
- Würfelt das Spiely jedoch eine 1, verfallen sämtliche ette Punkte der Runde und das nächste Spiely ist an der Reihe.
Beispiele:
Alice hat 10 Punkte auf ihrem Konto. Sie ist an der Reihe und würfelt (nacheinander, fallweise):
- 1
Alice bekommt keine Punkte. Das nächste Spiely ist an der Reihe. Ihr Konto hat weiterhin 10 Punkte. - 4, 4, 4, 4, 4
Nach diesen Würfen beschließt sie, ihre Runde zu beenden. Das nächste Spiely ist an der Reihe und Alice bekommt 5×4 = 20 Punkte gutgeschrieben. Auf ihrem Konto sind nun 10 + 20 = 30 Punkte. - 6, 6, 6, 6, 6, 1
Alice bekommt keine Punkte, wegen der letzten 1. Das nächste Spiely ist an der Reihe. Alices Konto hat weiterhin 10 Punkte.
Deine Aufgabe:
Schreibe ein Schweinchen-Programm für zwei Spieler, das das Würfeln und die Rechnerei übernimmt.
Das User-Interface unterliegt gänzlich deinem persönlichen Geschmack, sollte aber benutzbar sein.
Fleißaufgabe:
Schreibe dein Programm so um, dass ein Einzelspiely gegen den Computer spielen kann.
Entwickle dafür eine nachvollziehbare Vorgehensweise für den Computer und lege ihn in einem Kommentarteil dar. Alles ist erlaubt, außer ein Computerpart, der einfach nur schummelt — es sei denn, der Computer schummelt auf wirklich clevere Weise.
0 Kommentare
4 Lösung(en)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class schweinchen {
//Das klassische Schweinchen Spiel. Dein Ziel, erreiche eine insgesamte Augenzahl von 100, würfelst du dabei eine 1 verlierst du alle Punkte. Mit einer vorzeitigen Pause kannst du deine Punkte sichern. Sei dabei aber schneller als dein Gegner!
private static boolean GAME_RUNNING = false;
private static boolean IN_ROUND = false;
public static void main(String[] args) throws IOException {
GAME_RUNNING = true;
gameStart();
}
private static void gameStart() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int sumPlayerOne = 0;
int sumPlayerTwo = 0;
boolean trueIfPlayerOne = true;
while(GAME_RUNNING) {
IN_ROUND = true;
int sumOfRolledDices = 0;
if(trueIfPlayerOne){
System.out.println("SPIELER 1: ");
}else{
System.out.println("SPIELER 2: ");
}
while (IN_ROUND){
int currentDice = throwDice();
System.out.printf("Deine gewürfelte Augenzahl: %d \n\n", currentDice);
if(currentDice == 1){
System.out.println("Damit ist dein Zug zu Ende.\n");
break;
}
sumOfRolledDices += currentDice;
int tempSum = trueIfPlayerOne ? sumPlayerOne : sumPlayerTwo;
System.out.printf("Du hast in diesem Zug eine Augenzahl von %d gewürfelt und insgesamt %d. Möchtest du weiterwürfeln? " +
"Drücke 'j', ansonsten drücke 'n'\n", sumOfRolledDices, sumOfRolledDices+tempSum);
if(reader.readLine().equals("n")){
if (trueIfPlayerOne){
sumPlayerOne += sumOfRolledDices;
}else{
sumPlayerTwo += sumOfRolledDices;
}
trueIfPlayerOne ^= trueIfPlayerOne;
IN_ROUND = false;
}
if(sumPlayerOne == 100 ){
System.out.println("Spieler 1 hat gewonnen.");
}else if(sumPlayerTwo == 100){
System.out.println("Spieler 2 hat gewonnen.");
}
}
}
}
private static int throwDice() {
return (int) (Math.random()*6)+1;
}
}
Lösung von: Name nicht veröffentlicht
let players = [
{ name: '', score: 0 },
{ name: '', score: 0 }
];
let curPlayer = 1, // fällt in zeile 45 auf 0 zurück
gameOver = false; // wird TRUE, wenn ein spiely 100 punkte erreicht
// namen für spielys abfragen
// (erleichtert die übersicht)
players[0].name = prompt("Name Spieler #1:").toUpperCase();
players[1].name = prompt("Name Spieler #2:").toUpperCase();
// würfeln
function roll() { return 1 + Math.floor(Math.random()*6) }
// spielrunde für ein spiely
function turn(player) {
let curSum = 0, // summe der runde
quit = false, // abbruch der runde
dice; // aktueller wurf
alert(`${player.name} ist dran (${player.score}).`);
while (!quit) {
dice = roll();
if (dice == 1) {
alert('Eine 1. So\'n Pech!');
quit = true;
} else {
curSum += dice;
quit = !confirm(`
Du würfelst eine ${dice} (Summe: ${curSum}).\n
Nochmal würfeln?
`);
if (quit) {
player.score += curSum;
if (player.score >= 100) gameOver = true;
}
}
}
}
// *main*
while (!gameOver) {
// nächstes spiely
curPlayer == 0 ? curPlayer = 1 : curPlayer = 0;
turn(players[curPlayer]);
if (gameOver) alert(`
${players[curPlayer].name} gewinnt (${players[curPlayer].score}).
`);
}
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
#Es wird abwechselnd gewürfelt
import random
class Schweinchen:
def __init__(self, name):
self.name = name
self.spieler_summe = 0
self.spieler_summe_aktuell = 0
def spiel(self):
print(f"Summe von {self.name} ist: |||| {self.spieler_summe} ||||")
while self.spieler_summe < 120:
try:
self.wuerfeln = int(input(f"\n{self.name}, möchtest Du Würfeln? 1 ja, 0 nein: "))
except:
print ("Falsche Eingabe")
self.spiel()
if self.wuerfeln == 1:
random.seed()
self.zahl = random.randint(1,6)
if self.zahl != 1:
print(f"{self.name} würfelt eine: {self.zahl}")
self.spieler_summe_aktuell += self.zahl
self.spieler_summe +=self.zahl
self.spiel()
else:
print (f"{50*'-'}\nDie gewürfelte Zahl von {self.name} ist eine {self.zahl} - Pech\n{50*'-'}")
if self.spieler_summe - self.spieler_summe_aktuell < 0:
self.spieler_summe = 0
else:
self.spieler_summe = self.spieler_summe - self.spieler_summe_aktuell
#self.spieler_summe_aktuell = 0
print(f"Gesamtsumme von {self.name} ist: ", self.spieler_summe)
print(f"Nächster Spieler -->")
if self == spieler1:
spieler2.spiel()
else:
spieler1.spiel()
elif self.wuerfeln == 0:
self.spieler_summe_aktuell = 0
if self == spieler1:
#self.spieler_summe_aktuell = 0
spieler2.spiel()
elif self == spieler2:
#self.spieler_summe_aktuell = 0
spieler1.spiel()
else:
print("Keine richitge Antwort")
self.spiel()
break
else:
print(f"{50*'-'}\nGewinner ist {self.name}\n{50*'-'}")
spieler1 = Schweinchen("Spieler 1")
spieler2 = Schweinchen("Spieler 2")
spieler1.spiel()
Lösung von: Py Thon ()
from random import randint
print('Willkommen bei Schweinchen'+"\n")
print("Spieler 1 beginnt.")
Punkte=[0,0]
amzug=0
punkte=0
while True:
if Punkte[0]>=100:
print('Spieler 1 hat mit '+str(Punkte[0])+' zu '+str(Punkte[1])+' Punkten gewonnen.'+"\n")
break
elif Punkte[1]>=100:
print('Spieler 2 hat mit '+str(Punkte[1])+' zu '+str(Punkte[0])+' Punkten gewonnen.'+"\n")
break
print("Spieler 1 ist am Zug. " if amzug%2==0 else "Spieler 2 ist am Zug. ")
print("Drücke w um zu würfeln oder b um die Runde zu beenden.")
x=input('')
if x=='w':
wu=randint(1,6)
if wu == 1:
print("\nWürfel: 1 \nDiese Runde insgesamt: 0\n")
print("Punkte Gesamt: Spieler 1("+str(Punkte[0])+") "+"Spieler 2("+str(Punkte[1])+")")
print("Der Nächste bitte! ")
print("______________________________________________________________________________")
amzug+=1
punkte=0
continue
else:
punkte+=wu
print("Würfel: "+str(wu)+"\nDiese Runde insgesamt: "+str(punkte)+"\n")
print("______________________________________________________________________________")
continue
elif x=='b':
Punkte[amzug%2]+=punkte
punkte=0
print("Punkte Gesamt: Spieler 1("+str(Punkte[0])+") "+"Spieler 2("+str(Punkte[1])+") \n\n")
print("__________________________________________________________________________________")
amzug+=1
continue
else:
print('Ungültige Eingabe, versuche es noch einmal!'+"\n")
continue
print("Gut gespielt ihr Haudegen! \n")
Lösung von: rob ert (tub)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: