PyGame 英文打字游戏
Posted 忆想不到的晖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyGame 英文打字游戏相关的知识,希望对你有一定的参考价值。
专属于你的导航栏 1、回忆篇2、正文篇
3、结尾篇
回忆篇
回想起初中时候,语文老师(陈老师)教的知识。
这篇文章的开头主要有什么作用?
答:
1、开门见山,点出文章主题,为下文做铺垫,讲述了...
2、设置悬念,吸引读者的阅读兴趣或思考。
3、衬托人物的情感(表现中心)。
4、......
现在依然记得老师布置给我们的一篇作文(毕竟受过表扬☺),那时阳光明媚,晴空万里,突然下了一场冰雹,老师叫我们写一篇关于冰雹
的作文
我的作文能力也不怎么行,我是模仿安塞腰鼓课文写的(想象一下好一个安塞腰鼓!
改成好一个冰雹!
),在班上拿出来了读(开心的不得了),其实这也可以激励同学和自己学习,毕竟一件事被人认可,心里会有成就感,鼓舞自己向前。
第三方介入:停停停,老子不想了解太多你的往事,赶紧的有话快说,有pi快放
(自己模拟和自己对话,望谅解)
好,就不继续往下了,在回忆下去我都怕自己和看到这篇文章想起往事的人会感动的流泪(博主不要脸
)
正文篇
1、开门见山
小二,上效果图
好的勒,客官请稍等,马上就来
Python开发的英文单词打字小游戏(客官请慢用
)
2、开发环境和整体结构
3、模拟类图设计(非专业)
一开始我是用word
去模拟设计(插入形状
),设计第一个类图的时候我都感觉好慢,心里难受(word不怎么会用这才是重点,嘿嘿
)【如图】。
幸好看到了这篇文章在线UML Class Diagram 类图工具 - 教程,不然我差点用word去完成类图设计模拟了。
详细的类图模拟设计
4、pygame游戏框架思想
5、pygame中精灵(Sprite)和精灵组(Group)的职责
6、部分代码展示
import os
import sys
import random
import pyautogui as gui
from Game_Sprite import *
pygame.init()
# 获取电脑屏幕分辨率
screen_width, screen_height = gui.size()
game_x = (screen_width - Game_Info.SCREEN_RECT.width)/2
game_y = (screen_height - Game_Info.SCREEN_RECT.height)/2
# 设置游戏窗口相对电脑屏幕居中
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (game_x, game_y)
def parser_words():
"""
解析英语单词
:return english_words
"""
english_words = []
word_contents = open("english_word.txt", encoding="gbk")
for value in word_contents:
# 去除左边空格
value = value.lstrip()
word_list = value.split(" ")
words = [i for i in word_list if i != '']
if len(words) >= 2:
# 把解析好的单词和中文翻译封装到字典中,然后加入集合
english_words.append("eng_word": words[0], "cn_comment": words[1])
return english_words
去除空值
words = [i for i in word_list if i != '']
本来想用正则去筛选解析的,试了一下由于不太会用,也不喜欢这种编程风格(重要是小编菜,望大神指点
),就大概看了一下 四级英文单词文本整体结构和规律,一开始我从网上找的文本是不符合规律的,用notepad++
大概整理一下,然后用代码解析,虽然简单,但我想讲的是解决问题的想法而不是简单的复制粘贴
,首先代码内部不好解析,我们可以从外部设法解决。就像设定一些标准一样(无规矩不成方圆
)
封装解析结果为什么要用字典?
1、首先字典是以键(key
)值(value
)对存储数据的,我好给我的数据取个别名(key值
),增加代码的可读性
,到后面随机生成单词精灵
时我是用随机下标index
加key值
取数据,而不是self.words[index][0];self.words[index][1];
index = random.randint(0, len(self.words) - 1)
eng_word = self.words[index]["eng_word"]
cn_comment = self.words[index]["cn_comment"]
2、解析出来的结果是1个英文单词和多个中文意思,我只封装了一个中文意思,假设你想多种中文意思都要,你可能会觉得封装成字典(dict
)的麻烦,就直接把整个列表(list)给扔进去
english_words.append(words)
或者利用切片[]
english_words.append("eng_word": words[0], "cn_comment": words[1:])
而不是
# 把解析好的单词和注释封装到字典中,然后加入列表
english_words.append("eng_word": words[0], "cn_comment": words[1])
从而导致随机生成单词代码要更复杂一点(要多个中文意思),到后面显示英文单词和多个中文意思的时候,太长,不直观,不美观
。
因此我们要懂得取舍,更要在生活中懂得取舍
游戏信息抽取
import pygame
GAME_NAME = "WordSprite"
SCREEN_RECT = pygame.Rect(0, 0, 1200, 800)
INPUT_RECT_WIDTH = 600
INPUT_RECT_HEIGHT = 100
GAME_BLOOD_RECT = pygame.Rect(SCREEN_RECT.width / 2 - 250, SCREEN_RECT.height - 26, 500, 25)
GAME_ICON = "image/rabbit.ico"
GAME_BACKGROUND = "image/game_bg.gif"
INPUT_BACKGROUND = "image/input_bg.png"
SCORE_RECORD_FILE = "score_record.txt"
# 单词拼写成功后的消失动画
KILL_ANIMATION = ["image/000.png", "image/001.png", "image/002.png", "image/003.png", "image/004.png",
"image/005.png", "image/006.png", "image/007.png"]
FRAME_PRE_SEC = 60 # 游戏的刷新帧率
WORD_SIZE = 22 # 单词大小
WORD_SPEED = 0.5 # 单词下落速度
# 创建单词的时间间隔(毫秒)
CREATE_WORD_INTERVAL = 1000 * 4
# 首次生成单词的数量
GENERATE_WORD_NUM = 6
# 字体颜色
RED = pygame.color.Color("RED")
YELLOW = pygame.color.Color("YELLOW")
BLUE = pygame.color.Color("#70f3ff")
GREEN = pygame.color.Color("GREEN")
WHITE = pygame.color.Color("WHITE")
ORANGE = pygame.color.Color("ORANGE")
PINK = pygame.color.Color("#ff4777")
# 创建单词事件
CREATE_WORD_EVENT = pygame.USEREVENT
# 游戏结束事件
GAME_OVER_EVENT = pygame.USEREVENT + 1
小编喜欢单独拿一个模块来抽取游戏信息(来实现程序的高内聚低耦合
和维护性
)。
我们很多人(包括我)喜欢一有想法就简单思考一下,然后就编写代码,虽然是练习,没必要想太多,但我认为还是需要养成良好的编码习惯,有利于之后的发展。就以我这个小游戏举例,一开始没有做设计,没有做太多的分析,刚完成的时候好简约,慢慢的加血条,分数,动画,还有重玩,导致后面的代码冗余性变高了,可读性变差了
。一开始还好可以改,到后面越来越多,人的堕落天使
就出来了,说道:“怕什么,反正程序实现了效果,达到了想要的功能就可以了
”
(解读人性—懒惰)
更多的代码,文章底部可以下载源码,相互学习。
7、回归主题
再说下去,就跑题啦(嘿嘿
)
Typing Game 之英语的重要性!!!
英语的重要性
1、英语的起源
2、英语是与电脑联系最密切的语言,大多数编程语言都与英语有联系,而且随着网络的使用,英文的使用更普及。
3、英语是国际指定的官方语言(作为母语),也是世界上最广泛的第一语言,英语包含约49万词,外加技术名词约30万个,是词汇最多的语言,也是欧盟以及许多国际组织以及英联邦国家的官方语言,拥有世界第三位的母语使用者人数,仅次于汉语和西班牙语母语使用者人数。
4、我做这个小游戏的目的,练习打字手速
,学习英语
,巩固学习知识
、学以致用有效的输出
8、结尾篇
并不是每个人都想阅读你的文章
并不是每个人都知道你的实力
并不是每个人都想了解你
…
因此:
有品质的文章,有时需要耀眼的标题引入;
有强大的实力,有时需要学历的衬托;
有趣的内在,有时需要精美的形象;
…
品尝的差不多了,小二,再来碗鸡汤
读书多了,容颜自然改变,
许多时候,自己可能以为许多看过的书籍都成了过眼云烟,不复记忆,其实他们仍是潜在的。
在气质里,在谈吐上,在胸襟的无涯,当然也可能显露在生活和文字里。—【三毛】
千里马常有,而伯乐不常有
小二,结账
源码下载(含可运行exe程序):https://gitee.com/huiDBK/Typing_Game
小二:客官慢走,欢迎下次光临
以上是关于PyGame 英文打字游戏的主要内容,如果未能解决你的问题,请参考以下文章