脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python+Pygame实战之英文版猜字游戏的实现

Python+Pygame实战之英文版猜字游戏的实现

2022-08-11 11:05顾木子吖 Python

这篇文章主要为大家介绍了如何利用Python中的Pygame模块实现英文版猜单词游戏,文中的示例代码讲解详细,对我们学习Python游戏开发有一定帮助,需要的可以参考一下

导语

当下的孩子们多少会被电子产品“侵袭”,那么既然都要玩游戏,为什么不选既能玩又能收获知识的呢?

Python+Pygame实战之英文版猜字游戏的实现

兴趣是最大的学习推动力,当学习英语变成一款小游戏时,不仅能够玩游戏,激发调动孩子的积极性,还能够让孩子们在娱乐中潜移默化地掌握英语的学习技巧哦~

今天木子为大家敲了一款简单的英语版《神奇的猜字小游戏》,分享给大家,希望能帮到大家。如果您是一位热心于辅导孩子学习英语的家长,上面这款游戏也不妨用一用,试一试哦~

Python+Pygame实战之英文版猜字游戏的实现

(文中代码仅供娱乐,真要辅导孩子边玩儿游戏边学习英语,请大家找找这方面的app啦随便一款都很可的。噗又是自我调节的一天,真实的自我认知,哈哈哈.jpg)

Python+Pygame实战之英文版猜字游戏的实现

 

一、运行环境

小编使用的环境:Python3、Pycharm社区版、Pygame模块部分自带就不一一 展示啦。

模块安装:pip install -i https://pypi.douban.com/simple/ +pygame

 

二、素材(图片等)

图片的话可以自己准备,但是要注意的大小尺寸问题还有图片是.png模式的哈。

Python+Pygame实战之英文版猜字游戏的实现

单词的话这个要自己准备,我这里就准备了几个单词的,大家可以从最简单的开始哈。

Python+Pygame实战之英文版猜字游戏的实现

 

三、代码展示

主程序:

# 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)游戏界面

Python+Pygame实战之英文版猜字游戏的实现

2)游戏开始

Python+Pygame实战之英文版猜字游戏的实现

3)游戏失败次数

失败每一次会出现一部分,然后拼出来一个人,五次全部拼错,就挂了。正常的通关是不会出现这个小人的。

Python+Pygame实战之英文版猜字游戏的实现

以上就是Python+Pygame实战之英文版猜字游戏的实现的详细内容,更多关于Python Pygame猜字游戏的资料请关注服务器之家其它相关文章!

原文地址:https://blog.csdn.net/weixin_55822277/article/details/126276450

延伸 · 阅读

精彩推荐
  • PythonDjango权限机制实现代码详解

    Django权限机制实现代码详解

    这篇文章主要介绍了Django权限机制实现代码详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下...

    SuPhoebe9022021-01-12
  • Pythonpython+pyqt5实现KFC点餐收银系统

    python+pyqt5实现KFC点餐收银系统

    这篇文章主要为大家详细介绍了python+pyqt5实现KFC点餐收银系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    dcjmessi10482021-05-22
  • Pythonpython UIAutomator2使用超详细教程

    python UIAutomator2使用超详细教程

    这篇文章主要介绍了python UIAutomator2使用超详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    Jepson20176622021-09-06
  • Python利用Python通过获取剪切板数据实现百度划词搜索功能

    利用Python通过获取剪切板数据实现百度划词搜索功能

    大家是不是嫌弃每次打开百度太麻烦?今天教大家利用Python通过获取剪切板数据实现百度划词搜索功能,用程序直接打开网页,需要的朋友可以参考下...

    最遥远的天秤8162021-11-25
  • Pythonpython 堆和优先队列的使用详解

    python 堆和优先队列的使用详解

    这篇文章主要介绍了python 堆和优先队列的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    LIUHUANUCAS4052021-06-04
  • Python详解pygame捕获键盘事件的两种方式

    详解pygame捕获键盘事件的两种方式

    这篇文章主要介绍了详解pygame捕获键盘事件的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    CHQC3885442021-10-06
  • Python浅谈python为什么不需要三目运算符和switch

    浅谈python为什么不需要三目运算符和switch

    下面小编就为大家带来一篇浅谈python为什么不需要三目运算符和switch。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看...

    Python教程网2362020-08-28
  • Pythonpython使用tkinter实现屏幕中间倒计时

    python使用tkinter实现屏幕中间倒计时

    这篇文章主要为大家详细介绍了python使用tkinter实现屏幕中间倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    酷酷的波波5572021-09-16