python——pygame小试——hangman

来源:互联网 发布:数据库关系模型的概念 编辑:程序博客网 时间:2024/05/21 14:54

嘛,python期末要做个pj,hangman,开学时wxp老师展示了两个据说是上届的作品,用的pygame,心血来潮,也自己做了个

但是昨晚发现他发的东西有这个开头:

# Four-In-A-Row (a Connect Four clone)
# By Al Sweigart al@inventwithpython.com
# http://inventwithpython.com/pygame
# Released under a "Simplified BSD" license

哦?(黑人问号)SHIT


并且代码很规范,不像是学生写的,不是变态谁一个comma后面必有blank啊

嘛,由于期末还有很久结束,先不放上代码了,之后再做详解,记录使用的pygame操作


流程:

1.从words.txt读入词库,随机选择一个

2.得到的单词反馈给游戏界面,画出相应下划线

3.从界面给出的26个字母按钮中读取用户选择的字符

4.判断选择的字符是否正确,不断刷新用户选择对的字符组和错误数记录,反馈给游戏界面,画上hangman状态,在下划线上方打出用户选对的字母

5.游戏中止判断,失误6次,用户失败,并将下划线上单词补齐,未敲出字母打为红色。用户拼写正确,恭喜一下。

6.5secs内关闭游戏


难点:

1.制作中最费劲的地方在于,pygame并没有按钮这个东西,你要自己做一个出来,我参考的SRL的博客,以下是原文链接:

https://www.cnblogs.com/SRL-Southern/p/4949624.html

修改后得到的按钮:

鼠标不放上去,字母为白色

鼠标放上去,字母变成红色

鼠标点击,字母变为灰色,并且变不回去


2.pygame的游戏界面显示对于一个图片的展示需要分三步:

①:background = pygame.image.load(background_image_filename).convert_alpha()

第一步,载入图片,生成一个特殊类surface

②:screen.blit(background, (0,0))

将这个surface展示到生成的游戏界面窗口内

③:pygame.display.update()

展示更新,将surface真正展示出来,三步缺一不可

但是对于难点1中的按钮,又多了一个问题

screen.blit和pygame.display.update()对于在游戏界面内打字是覆盖的,会产生什么效果呢?

第一次打“一”,第二次打“二”,屏幕上就会有一个“三”,(如果位置不变的话),除非你每次将所有的底层surface都更新一遍,十分增加开销

所以十分纠结对于按钮,选择使用文字还是图片(对于26个字母,每个字母三个颜色的30px*30px的图片,会累死的),我感觉这样的实现十分龌龊,算了算了

所幸对于文字的覆盖,如果文字内容相同,仅仅更换颜色,并不会看出什么明显差别



待解决问题:

pygame背景音频只能同时播放一个,如果想要在背景音下,每次用户点击按钮,发出按钮被点击的声音要怎么做


阅读全文
0 0
原创粉丝点击