• 【Pygame实战】再次祭出舍不得分享的学习小技巧,用游戏玩出英文能力(O基础也能轻松get)


    导语

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

    识的呢?👇👇👇👇👇👇

    兴趣是最大的学习推动力,当学习英语变成一款小游戏时,不仅能够玩游戏,激发调动孩子的

    积极性,还能够让孩子们在娱乐中潜移默化地掌握英语的学习技巧哦~

    今天木子为大家敲了一款简单的英语版《神奇的猜字小游戏》,分享给大家,希望能帮到大

    家。如果您是一位热心于辅导孩子学习英语的家长,上面这款游戏也不妨用一用,试一试哦~

    所有文章完整的素材+源码都在👇👇

    粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

    (文中代码仅供娱乐,真要辅导孩子边玩儿游戏边学习英语,请大家找找这方面的app啦~随便一

    款都很可的。噗~又是自我调节的一天,真实的自我认知,哈哈哈.jpg

    正文

    一、运行环境

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

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

    二、素材(图片等)

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

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

    三、代码展示

    主程序:

    1. # File Name:神奇的猜数字游戏.py
    2. import pygame
    3. import random
    4. pygame.init()
    5. winHeight = 480
    6. winWidth = 700
    7. win=pygame.display.set_mode((winWidth,winHeight))
    8. BLACK = (0,0, 0)
    9. WHITE = (255,255,255)
    10. RED = (255,0, 0)
    11. GREEN = (0,255,0)
    12. BLUE = (0,0,255)
    13. LIGHT_BLUE = (102,255,255)
    14. btn_font = pygame.font.SysFont("arial", 20)
    15. guess_font = pygame.font.SysFont("monospace", 24)
    16. lost_font = pygame.font.SysFont('arial', 45)
    17. word = ''
    18. buttons = []
    19. guessed = []
    20. 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')]
    21. limbs = 0
    22. def redraw_game_window():
    23. global guessed
    24. global hangmanPics
    25. global limbs
    26. win.fill(GREEN)
    27. # Buttons
    28. for i in range(len(buttons)):
    29. if buttons[i][4]:
    30. pygame.draw.circle(win, BLACK, (buttons[i][1], buttons[i][2]), buttons[i][3])
    31. pygame.draw.circle(win, buttons[i][0], (buttons[i][1], buttons[i][2]), buttons[i][3] - 2
    32. )
    33. label = btn_font.render(chr(buttons[i][5]), 1, BLACK)
    34. win.blit(label, (buttons[i][1] - (label.get_width() / 2), buttons[i][2] - (label.get_height() / 2)))
    35. spaced = spacedOut(word, guessed)
    36. label1 = guess_font.render(spaced, 1, BLACK)
    37. rect = label1.get_rect()
    38. length = rect[2]
    39. win.blit(label1,(winWidth/2 - length/2, 400))
    40. pic = hangmanPics[limbs]
    41. win.blit(pic, (winWidth/2 - pic.get_width()/2 + 20, 150))
    42. pygame.display.update()
    43. def randomWord():
    44. file = open('words.txt')
    45. f = file.readlines()
    46. i = random.randrange(0, len(f) - 1)
    47. return f[i][:-1]
    48. def hang(guess):
    49. global word
    50. if guess.lower() not in word.lower():
    51. return True
    52. else:
    53. return False
    54. def spacedOut(word, guessed=[]):
    55. spacedWord = ''
    56. guessedLetters = guessed
    57. for x in range(len(word)):
    58. if word[x] != ' ':
    59. spacedWord += '_ '
    60. for i in range(len(guessedLetters)):
    61. if word[x].upper() == guessedLetters[i]:
    62. spacedWord = spacedWord[:-2]
    63. spacedWord += word[x].upper() + ' '
    64. elif word[x] == ' ':
    65. spacedWord += ' '
    66. return spacedWord
    67. def buttonHit(x, y):
    68. for i in range(len(buttons)):
    69. if x < buttons[i][1] + 20 and x > buttons[i][1] - 20:
    70. if y < buttons[i][2] + 20 and y > buttons[i][2] - 20:
    71. return buttons[i][5]
    72. return None
    73. def end(winner=False):
    74. global limbs
    75. lostTxt = 'You Lost, press any key to play again...'
    76. winTxt = 'WINNER!, press any key to play again...'
    77. redraw_game_window()
    78. pygame.time.delay(1000)
    79. win.fill(GREEN)
    80. if winner == True:
    81. label = lost_font.render(winTxt, 1, BLACK)
    82. else:
    83. label = lost_font.render(lostTxt, 1, BLACK)
    84. wordTxt = lost_font.render(word.upper(), 1, BLACK)
    85. wordWas = lost_font.render('The phrase was: ', 1, BLACK)
    86. win.blit(wordTxt, (winWidth/2 - wordTxt.get_width()/2, 295))
    87. win.blit(wordWas, (winWidth/2 - wordWas.get_width()/2, 245))
    88. win.blit(label, (winWidth / 2 - label.get_width() / 2, 140))
    89. pygame.display.update()
    90. again = True
    91. while again:
    92. for event in pygame.event.get():
    93. if event.type == pygame.QUIT:
    94. pygame.quit()
    95. if event.type == pygame.KEYDOWN:
    96. again = False
    97. reset()
    98. def reset():
    99. global limbs
    100. global guessed
    101. global buttons
    102. global word
    103. for i in range(len(buttons)):
    104. buttons[i][4] = True
    105. limbs = 0
    106. guessed = []
    107. word = randomWord()
    108. #MAINLINE
    109. # Setup buttons
    110. increase = round(winWidth / 13)
    111. for i in range(26):
    112. if i < 13:
    113. y = 40
    114. x = 25 + (increase * i)
    115. else:
    116. x = 25 + (increase * (i - 13))
    117. y = 85
    118. buttons.append([LIGHT_BLUE, x, y, 20, True, 65 + i])
    119. # buttons.append([color, x_pos, y_pos, radius, visible, char])
    120. word = randomWord()
    121. inPlay = True
    122. while inPlay:
    123. redraw_game_window()
    124. pygame.time.delay(10)
    125. for event in pygame.event.get():
    126. if event.type == pygame.QUIT:
    127. inPlay = False
    128. if event.type == pygame.KEYDOWN:
    129. if event.key == pygame.K_ESCAPE:
    130. inPlay = False
    131. if event.type == pygame.MOUSEBUTTONDOWN:
    132. clickPos = pygame.mouse.get_pos()
    133. letter = buttonHit(clickPos[0], clickPos[1])
    134. if letter != None:
    135. guessed.append(chr(letter))
    136. buttons[letter - 65][4] = False
    137. if hang(chr(letter)):
    138. if limbs != 5:
    139. limbs += 1
    140. else:
    141. end()
    142. else:
    143. print(spacedOut(word, guessed))
    144. if spacedOut(word, guessed).count('_') == 0:
    145. end(True)
    146. pygame.quit()
    147. # always quit pygame when done!

    四、效果展示

    (其实学习编程也要敲代码的啦,有点儿英语基础的话更好学习的啦~)

    1)游戏界面

    2)游戏开始

    3)游戏失败次数

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

    个小人的。

    总结

    安啦!这款小游戏就正式结束啦,其实这款游戏有一个不咋好的名字,所以就偷偷改了。嘿嘿

    我可真是个小机灵鬼儿。想要资料的,老规矩撒自己来拿 免费滴哈👇

    🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

    🔨推荐往期文章——

    项目1.1  扑克牌游戏

    【Pygame实战】打扑克牌嘛?赢了输了?这款打牌游戏,竟让我废寝忘食。

    项目1.0  超级玛丽

    程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

    项目1.1   扫雷

     Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

    项目8.6  末世生存游戏

    【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

    🎄文章汇总——

    汇总合集  Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

    (更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~)

  • 相关阅读:
    MySQL数据库:开源且强大的关系型数据库管理系统
    Apache Commons CSV 基本使用
    力扣热100 滑动窗口
    iOS性能优化
    给定一个大小为 n 的数组 nums ,返回其中的多数元素
    大学生HTML个人网页作业作品:基于html css实现围棋网页(带报告4800字)
    Node.js C++ 层的任务管理
    Java集成阿里云的实时语音识别遇到的一些问题
    十六、代码校验(1)
    数据挖掘实战(4)——聚类(Kmeans、MiniBatchKmeans、DBSCAN、AgglomerativeClustering、MeanShift)
  • 原文地址:https://blog.csdn.net/weixin_55822277/article/details/126276450