導語
當下的孩子們多少會被電子産品“侵襲”,那麼既然都要玩遊戲,為什麼不選既能玩又能收獲知
識的呢?👇👇👇👇👇👇

興趣是最大的學習推動力,當學習英語變成一款小遊戲時,不僅能夠玩遊戲,激發調動孩子的
積極性,還能夠讓孩子們在娛樂中潛移默化地掌握英語的學習技巧哦~
今天木子為大家敲了一款簡單的英語版《神奇的猜字小遊戲》,分享給大家,希望能幫到大
家。如果您是一位熱心于輔導孩子學習英語的家長,上面這款遊戲也不妨用一用,試一試哦~
(文中代碼僅供娛樂,真要輔導孩子邊玩兒遊戲邊學習英語,請大家找找這方面的app啦~随便一
款都很可的。噗~又是自我調節的一天,真實的自我認知,哈哈哈.jpg
)
正文
一、運作環境
小編使用的環境:Python3、Pycharm社群版、Pygame子產品部分自帶就不一一 展示啦。
子產品安裝:pip install -i https://pypi.douban.com/simple/ +pygame
二、素材(圖檔等)
圖檔的話可以自己準備,但是要注意的大小尺寸問題還有圖檔是.png模式的哈。
單詞的話這個要自己準備,我這裡就準備了幾個單詞的,大家可以從最簡單的開始哈。
三、代碼展示
主程式:
# File Name:神奇的猜數字遊戲.py
import pygame
import random
pygame.init()
winHeight = 480
winWidth = 700
win=pygame.display.set_mode((winWidth,winHeight))
BLACK = (0,0, 0)
WHITE = (255,255,255)
RED = (255,0, 0)
GREEN = (0,255,0)
BLUE = (0,0,255)
LIGHT_BLUE = (102,255,255)
btn_font = pygame.font.SysFont("arial", 20)
guess_font = pygame.font.SysFont("monospace", 24)
lost_font = pygame.font.SysFont('arial', 45)
word = ''
buttons = []
guessed = []
hangmanPics = [pygame.image.load('hangman0.png'), pygame.image.load('hangman1.png'), pygame.image.load('hangman2.png'), pygame.image.load('hangman3.png'), pygame.image.load('hangman4.png'), pygame.image.load('hangman5.png'), pygame.image.load('hangman6.png')]
limbs = 0
def redraw_game_window():
global guessed
global hangmanPics
global limbs
win.fill(GREEN)
# Buttons
for i in range(len(buttons)):
if buttons[i][4]:
pygame.draw.circle(win, BLACK, (buttons[i][1], buttons[i][2]), buttons[i][3])
pygame.draw.circle(win, buttons[i][0], (buttons[i][1], buttons[i][2]), buttons[i][3] - 2
)
label = btn_font.render(chr(buttons[i][5]), 1, BLACK)
win.blit(label, (buttons[i][1] - (label.get_width() / 2), buttons[i][2] - (label.get_height() / 2)))
spaced = spacedOut(word, guessed)
label1 = guess_font.render(spaced, 1, BLACK)
rect = label1.get_rect()
length = rect[2]
win.blit(label1,(winWidth/2 - length/2, 400))
pic = hangmanPics[limbs]
win.blit(pic, (winWidth/2 - pic.get_width()/2 + 20, 150))
pygame.display.update()
def randomWord():
file = open('words.txt')
f = file.readlines()
i = random.randrange(0, len(f) - 1)
return f[i][:-1]
def hang(guess):
global word
if guess.lower() not in word.lower():
return True
else:
return False
def spacedOut(word, guessed=[]):
spacedWord = ''
guessedLetters = guessed
for x in range(len(word)):
if word[x] != ' ':
spacedWord += '_ '
for i in range(len(guessedLetters)):
if word[x].upper() == guessedLetters[i]:
spacedWord = spacedWord[:-2]
spacedWord += word[x].upper() + ' '
elif word[x] == ' ':
spacedWord += ' '
return spacedWord
def buttonHit(x, y):
for i in range(len(buttons)):
if x < buttons[i][1] + 20 and x > buttons[i][1] - 20:
if y < buttons[i][2] + 20 and y > buttons[i][2] - 20:
return buttons[i][5]
return None
def end(winner=False):
global limbs
lostTxt = 'You Lost, press any key to play again...'
winTxt = 'WINNER!, press any key to play again...'
redraw_game_window()
pygame.time.delay(1000)
win.fill(GREEN)
if winner == True:
label = lost_font.render(winTxt, 1, BLACK)
else:
label = lost_font.render(lostTxt, 1, BLACK)
wordTxt = lost_font.render(word.upper(), 1, BLACK)
wordWas = lost_font.render('The phrase was: ', 1, BLACK)
win.blit(wordTxt, (winWidth/2 - wordTxt.get_width()/2, 295))
win.blit(wordWas, (winWidth/2 - wordWas.get_width()/2, 245))
win.blit(label, (winWidth / 2 - label.get_width() / 2, 140))
pygame.display.update()
again = True
while again:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN:
again = False
reset()
def reset():
global limbs
global guessed
global buttons
global word
for i in range(len(buttons)):
buttons[i][4] = True
limbs = 0
guessed = []
word = randomWord()
#MAINLINE
# Setup buttons
increase = round(winWidth / 13)
for i in range(26):
if i < 13:
y = 40
x = 25 + (increase * i)
else:
x = 25 + (increase * (i - 13))
y = 85
buttons.append([LIGHT_BLUE, x, y, 20, True, 65 + i])
# buttons.append([color, x_pos, y_pos, radius, visible, char])
word = randomWord()
inPlay = True
while inPlay:
redraw_game_window()
pygame.time.delay(10)
for event in pygame.event.get():
if event.type == pygame.QUIT:
inPlay = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
inPlay = False
if event.type == pygame.MOUSEBUTTONDOWN:
clickPos = pygame.mouse.get_pos()
letter = buttonHit(clickPos[0], clickPos[1])
if letter != None:
guessed.append(chr(letter))
buttons[letter - 65][4] = False
if hang(chr(letter)):
if limbs != 5:
limbs += 1
else:
end()
else:
print(spacedOut(word, guessed))
if spacedOut(word, guessed).count('_') == 0:
end(True)
pygame.quit()
# always quit pygame when done!
四、效果展示
(其實學習程式設計也要敲代碼的啦,有點兒英語基礎的話更好學習的啦~)
1)遊戲界面
2)遊戲開始
3)遊戲失敗次數
失敗每一次會出現一部分,然後拼出來一個人,6次全部拼錯,就挂了。正常的通關是不會出現這
個小人的。
總結
安啦!這款小遊戲就正式結束啦,其實這款遊戲有一個不咋好的名字,是以就偷偷改了。嘿嘿