#!/usr/bin/env python
# -*- coding: utf-8 -*-
######################################################
# Simple Hangman Game
# Author: Michael Skiba
# Dev notes: Works, but only with ASCII chars
######################################################
import re
import random
def find_all(string, substring):
start = 0
while True:
start = string.find(substring, start)
if start == -1:
return
yield start
start += len(substring)
r = re.compile("^[A-ZÄÜÖß]{1}$") #oversized much? Allow only one char
gameloop = True
wordlist = ['Apfel', 'Baum', 'Forensik', 'Frankfurt', 'Duesseldorf']
while(gameloop):
used_letters = []
counter = 10
word_original = random.choice(wordlist).upper()
word_displayed = list(len(word_original)*"_")
while counter >0:
while True:
guess = raw_input("Rate einen Buchstaben (Nur 1 Zeichen pro Versuch): ").upper()
if(r.match(guess)):
if(guess in used_letters):
print "Diesen Buchstaben haben Sie schon benutzt "+str(used_letters)
else:
used_letters.append(guess)
break
#print "Guess: "+guess
#print "Wort: "+word_original
if(guess in word_original):
positions = find_all(word_original, guess)
for pos in positions:
word_displayed[pos] = guess
if("_" not in word_displayed):
print "Das gesuchte Wort war: "+"".join(word_displayed)
print "Congratulations! You are a WinRAR!"
break
else:
print "Leider kommt "+guess+" nicht im gesuchten Wort vor"
#print "Leider kommt {} nicht im gesuchten Wort vor".format(guess)
counter -= 1
print "Aktuelles Wort: "+"".join(word_displayed)
print "Noch {} Versuch(e)".format(counter)
gameloop = (raw_input("Beenden? (y/n) ") != "y")