专属于你的导航栏

1、回忆篇

2、正文篇

3、结尾篇

回忆篇

回想起初中时候,语文老师(陈老师)教的知识。

这篇文章的开头主要有什么作用?

答:

1、开门见山,点出文章主题,为下文做铺垫,讲述了...

2、设置悬念,吸引读者的阅读兴趣或思考。

3、衬托人物的情感(表现中心)。

4、......

现在依然记得老师布置给我们的一篇作文(毕竟受过表扬☺),那时阳光明媚,晴空万里,突然下了一场冰雹,老师叫我们写一篇关于冰雹的作文

我的作文能力也不怎么行,我是模仿安塞腰鼓课文写的(想象一下好一个安塞腰鼓!改成好一个冰雹!),在班上拿出来了读(开心的不得了),其实这也可以激励同学和自己学习,毕竟一件事被人认可,心里会有成就感,鼓舞自己向前。

第三方介入:停停停,老子不想了解太多你的往事,赶紧的有话快说,有pi快放(自己模拟和自己对话,望谅解)

好,就不继续往下了,在回忆下去我都怕自己和看到这篇文章想起往事的人会感动的流泪(博主不要脸

正文篇

1、开门见山

小二,上效果图
好的勒,客官请稍等,马上就来

Python开发的英文单词打字小游戏(客官请慢用)

2、开发环境和整体结构

  • Python3.7.1
  • 第三方库和框架:pyautogui、pyinstaller、pygame
  • 四级英文单词文本
  • 开发工具Pycharm2019.1.3

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值),增加代码的可读性,到后面随机生成单词精灵时我是用随机下标indexkey值取数据,而不是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 pygameGAME_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

Python学习资源

小二:客官慢走,欢迎下次光临

PyGame 英文打字游戏相关推荐

  1. Pygame 简单打字游戏

    功能描述: 1.点击开始游戏,会出现一段英文文章,并进入60s倒计时 2.如果一分钟内输入完成这段会自动呈现下一段 3.单词正确数实时统计,背景颜色随输入速度而变化 代码: 注意:上面动态图需要放在游 ...

  2. python小游戏开发,使用python实现英语打字游戏

    需求分析 英文打字小游戏,要有多界面交互,界面整洁.美观,可调节游戏等级难度,可配置游戏信息. 要有游戏分数,游戏时间,动画特效,背景音乐,不同游戏等级的历史最高分记录. 拼写成功的英文单词显示中文意 ...

  3. python打字游戏增加开始页面_pygame实现打字游戏

    本文实例为大家分享了pygame实现打字游戏的具体代码,供大家参考,具体内容如下 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 # -*- coding=utf-8 -*- i ...

  4. pygame简单的俄罗斯方块游戏和简单的打字游戏

    1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...

  5. pygame做一个简单的打字游戏

    pygame做一个简单的打字游戏 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 # -*- coding=utf-8 -*- import pygame from pygame ...

  6. python:pygame小游戏(三)—— 打字游戏

    代码一:实现字符下落的基本功能 """ 打字游戏 1. 声明列表word.xx(x坐标值).yy(y坐标值) 2. 创建init()函数,初始化三个列表 3. 第四部分: ...

  7. pygame的字体画不出来_微软的python3教学的pygame的小游戏解析和学习

    1.微软的python教学的pygame的小游戏 1.1 小球自弹跳代码:(微软官方网站给的) import sys, pygame #导出模块pygame.init() #初始化#定义界面参数siz ...

  8. java打字小游戏_java实现打字游戏小程序

    本文实例为大家分享了java实现打字游戏小程序的具体代码,供大家参考,具体内容如下 一.设计思路 1.创建一个窗体 2.在窗体上放置一个面板,用paint方法画出英文字母,随机放置字母位置,并随时间自 ...

  9. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇) 资源下载 完整代码 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) Python 打字小游戏开发,来体验不一样的 ...

最新文章

  1. extern C 的作用
  2. Elasticsearch全量数据增量遍历实现原理
  3. 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)
  4. Win11任务栏大小怎么更改
  5. Kali Linux 网络扫描秘籍 第六章 拒绝服务(一)
  6. 内购订单进行二次处理_「物流图表」复杂业务场景下的订单管理系统搭建
  7. Spark 概念学习系列之从物理执行的角度透视spark Job(十七)
  8. 计算机专业可以从事平面设计吗,计算机专业和平面设计专业是一个专业不?
  9. 什么是M1、M2以及与资本市场的关系
  10. 微信小店怎么设置优惠券
  11. 征途服务器维护镖车怎么办,征途网络游戏家族运镖问题
  12. 基于QT实现的简单版控制台植物大战僵尸
  13. Java基础 DAY07
  14. MySQL 之 扩展例子
  15. 三维图形在计算机如何存储,计算机三维图形技术.pdf
  16. asp毕业设计——基于asp+access的学生管理系统设计与实现(毕业论文+程序源码)——学生管理系统
  17. 数据透视表与mysql_通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)...
  18. Bitvise SSH Client+SwitchySharp配置
  19. 秒杀项目如何防止超卖问题
  20. cdoj1334郭大侠与Rabi-Ribi

热门文章

  1. Airtest 入门2 图像库
  2. note3+5.0+Android软件正在升级,波兰先行!三星为Note4推送Android 5.0升级
  3. 金多多简述外围市场涨跌不一
  4. 毕业五年决定你的一生
  5. 计算机毕业设计(附源码)python智慧工地管理系统
  6. Java幸运数求和_Java实现 幸运数字
  7. Linux下对grub引导文件丢失进行恢复
  8. 快速打造企业员工积分福利系统,数字化福利管理增强员工凝聚力!
  9. WIN10 开机自动拨号
  10. java阿里云直播推流拉流工具类