Могу ли я предложить следующее в качестве отправной точки? Обратите внимание, что вам нужно будет снабдить свой собственный файл words.txt
одним греческим словом в строке. Как только этот файл находится в том же каталоге, эта программа должна нормально работать:
#! /usr/bin/env python3
import random
import sys
import turtle
def main():
words = load_words()
my_word = random.choice(words)
print('Welcome to the game of hangman!')
print('I have chosen a word for you to guess,')
print(f'and it contains {len(my_word)} letters.')
print('Here is the gallows for your hangman.')
hangman = draw_hangman()
next(hangman)
guess = [None] * len(my_word)
wrong = []
while True:
print('This is what you have so far.')
print(' '.join('_' if char is None else char for char in guess))
char = get_character()
if char in guess or char in wrong:
print(f'You have already guessed {char!r} previously.')
elif char in my_word:
for index, my_char in enumerate(my_word):
if my_char == char:
guess[index] = my_char
if None not in guess:
print('You have won!')
print(f'You have guessed {my_word!r} correctly!')
draw_finish()
else:
wrong.append(char)
print('Wrong!')
next(hangman)
def get_character():
while True:
try:
char = input('What character would you like to guess? ')
except EOFError:
sys.exit()
except KeyboardInterrupt:
print('Please try again.')
else:
if len(char) != 1:
print('Only a single character can be accepted.')
elif not char.isalpha():
print('Please only use letters from the alphabet.')
else:
return char.casefold()
def load_words():
with open('words.txt') as file:
return [word.casefold()
for word in map(str.strip, file)
if word.isalpha() and len(word) >= 5 and len(set(word)) > 1]
def draw_hangman():
# Draw the gallows.
turtle.mode('logo')
turtle.speed(0)
turtle.reset()
turtle.penup()
turtle.hideturtle()
turtle.goto(300, -300)
turtle.pendown()
turtle.goto(-300, -300)
turtle.goto(-300, 200)
turtle.goto(-200, 300)
turtle.goto(0, 300)
turtle.color('brown')
turtle.goto(0, 200)
yield
# Draw the head.
turtle.color('green')
turtle.left(90)
turtle.circle(50)
yield
# Draw the body.
turtle.penup()
turtle.left(90)
turtle.forward(100)
turtle.pendown()
turtle.forward(200)
yield
# Draw left arm.
turtle.penup()
turtle.backward(150)
turtle.right(45)
turtle.pendown()
turtle.forward(100)
yield
# Draw right arm.
turtle.penup()
turtle.backward(100)
turtle.left(90)
turtle.pendown()
turtle.forward(100)
yield
# Draw left leg.
turtle.penup()
turtle.backward(100)
turtle.right(45)
turtle.forward(150)
turtle.right(22.5)
turtle.pendown()
turtle.forward(150)
yield
# Draw right leg.
turtle.penup()
turtle.backward(150)
turtle.left(45)
turtle.pendown()
turtle.forward(150)
turtle.done()
def draw_finish():
turtle.penup()
turtle.goto(0, 0)
turtle.write('You won!')
turtle.done()
if __name__ == '__main__':
main()
Я думаю, что нашел свой ответ :D
http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel2
И затем существует последняя Microsoft Geneva Framework, о которой объявляют в PDC. Идеально подходящий для того, в чем я нуждаюсь. (теперь, если только мой собственный ответ был отмечен как ответ :P)
Лучшая вещь реализовать STS на на платформе Windows состоит в том, чтобы использовать AD FS.
См. этот блог для получения дополнительной информации http://blogs.msdn.com/vbertocci/archive/2007/11/19/developing-a-minimal-sts-with-adfs-2-identity-framework-part-i-the-sts-itself.aspx.