1.pygame简单的俄罗斯方块游戏

一、对战的方块管理

定义一个BlockManage管理对战的方块

根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在每次创建方块时存放了玩家数量相同的拷贝,拷贝是避免对象的引用造成对同一个方块对象操作混乱。 然后HintBox里加入block_manage的引用并且在take_block函数里将创建Block改为使用block_manage去取方块

使用block_manage并分别传递给主面板的hint_box和右下角面板的VirtualHintBox,右下角面板的定义和初使设置完了以后,将下面的player改为player1和player2两个玩家。

在游戏主循环增加完相应的设置和操作,现在就可以玩人机对战了。

当然如果你把 .基本代码

当然就是一场机器人对机器人的战斗

二、记分和增加对抗性
增加记分显示比较容易,​ 给VirtualScoreBox实现下paint就行。

增加对抗性的话先设置个规则,谁的分数满1000,就可以给另一方增加两层方块作为攻击,为便于计算,我们在Panel里增加一个数字,用于标记对对方攻击的次数。 Panel里增加一个添加障碍物的函数

Panel里再添加一个获取是否有攻击触发的函数 完整源码点击这里

好了,现在对战效果也完成了。

最后再给AIPlayer一个level属性,将level映射为时间间隔

以现在的机器人水平,试了下大概能战胜5级的AIPlayer.

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

基本代码

下面的代码完成了每一秒在界面的顶部随机生成一个新的字母

# -*- coding=utf-8 -*-
import pygame
from pygame.locals import KEYDOWN
import randomw,h = 800,600
pygame.init()
screen = pygame.display.set_mode((w, h))white=255,255,255
black=0,0,0
myfont = pygame.font.Font(None,80)word_diff_ticks = 1000
word_ticks = pygame.time.get_ticks() + word_diff_ticksdef get_random_word():color = (random.randint(0, 255),random.randint(0, 255),random.randint(0, 255)) # 颜色随机x = random.randint(100, w-100) # x坐标从左右边距各100之间随机y = 0word = random.randint(65, 90)return x,y,word,colorarr=[]
arr.append(get_random_word())while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()screen.fill((255, 255, 255))for i in range(len(arr)): # 绘制这些字母x, y, word, c = arr[i]textImage = myfont.render(chr(word), True, c)screen.blit(textImage, (x, y))if pygame.time.get_ticks()>=word_ticks: # 计时增加新字母word_ticks +=word_diff_ticksarr.append(get_random_word())pygame.display.update()
复制代码

2.移动字母

先增加一个定时器,设定字母20毫秒移动一格

diff_ticks = 20
ticks = pygame.time.get_ticks() + diff_ticks
复制代码

在主循环中加入移动的代码

    if pygame.time.get_ticks() >= ticks:ticks += diff_ticksfor i in range(len(arr)):x, y, word, c = arr[i]arr[i] = (x, y+1, word, c)
复制代码

3.消除字母

在事件的处理代码中加入对键盘字母的判断

    for event in pygame.event.get():……if len(arr)>0 and event.type == KEYDOWN:if event.key == arr[0][2]+32: # 大小写字母差32arr.pop(0)
复制代码

规定每次消除都必须是第一个,所以如果正确按下了第一个字母,就将第一个字母移除

4.增加游戏难度级别 .需要完整源码私信666或者python

增加一个变量clear_word用于记录消除的字母数量,增加一个变量level用于记录目前的级别,把界面的标题设置显示当前level

clear_word=0
level = 1
pygame.display.set_caption('typing level:%d'%level)
复制代码

在正确按下字母后增加技术和判断是否增加难度,因为diff_ticks和word_diff_ticks分别是字母移动的时间间隔和增加一个新字母的时间间隔,所以对这两个变量进行*0.9的处理,就缩短了时间间隔,增加了难度

    for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()if len(arr)>0 and event.type == KEYDOWN:if event.key == arr[0][2]+32: # 大小写字母差32arr.pop(0)clear_word += 1if clear_word >= level*10: #每10个字母增加一次难度level+=1pygame.display.set_caption('typing level:%d' % level)diff_ticks=diff_ticks*0.9word_diff_ticks=word_diff_ticks*0.9
复制代码

5.游戏状态

增加一个变量game_state用于记录游戏状态

game_state=1  # 1.进行中 2.游戏失败
复制代码

游戏失败时的显示

    if game_state == 2:textImage = myfont.render("Level%d fail"%level, True, (255,0,0))sw,sh = textImage.get_size()screen.blit(textImage, ((w-sw)/2, (h-sh)/2)) # 居中显示
复制代码

移动字母的代码中做下修改,将代码放入game_state为1的判断中,并且用arr[0][1] > h检测最下面一个字母是否已经超过屏幕下线

    if game_state == 1:if pygame.time.get_ticks()>=word_ticks: # 计时增加新字母word_ticks +=word_diff_ticksarr.append(get_random_word())if pygame.time.get_ticks() >= ticks:ticks += diff_ticksfor i in range(len(arr)):x, y, word, c = arr[i]arr[i] = (x, y+1, word, c)if len(arr) > 0 and arr[0][1] > h: game_state=2
复制代码

对字母的按键判断处理处也增加下游戏状态的判断,避免游戏结束后还能消除字母

    for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()if game_state==1 and len(arr)>0 and event.type == KEYDOWN:……
复制代码

6.给第一个字母增加闪烁效果

为增加显示效果,给第一个字母增加下闪烁效果,便于提醒要敲下对应字母。 实现思路是每移动一格让这个字母随机变个颜色,以实现闪烁。 定义一个sign变量,用于切换颜色

sign=1
复制代码

在移动字母的地方增加下sign变量的切换1-sign实现0、1两个值的切换

    if game_state == 1:……if pygame.time.get_ticks() >= ticks:ticks += diff_tickssign=1-sign……
复制代码

在绘制字母的地方增加下sign的判断,如果是第一个字母,并且sign不为0,则对字母做随机颜色

    for i in range(len(arr)):x, y, word, c = arr[i]if i==0 and sign:c = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))textImage = myfont.render(chr(word), True, c)screen.blit(textImage, (x, y))
复制代码

7.最终效果图

完整的代码完整

pygame简单的俄罗斯方块游戏和简单的打字游戏相关推荐

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

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

  2. HTML5+JS游戏开发模块----canvas打字游戏

    原本要继续研究塔防游戏,但发现寻路算法搞不定,其实算法压根看不懂,看的头晕,炮塔自动追踪移动物体也搞不定,塔防项目得延迟了.所以,就搞了另外一个游戏,键盘打字母游戏,老样子,因为初学javascrip ...

  3. HTML5+JS游戏开发模块----canvas打字游戏升级版

    之前发了简单版本打字游戏,现在增加图片,设置开始按钮,记录分数,字母显示也改成对象数组,直接操作对象而不是操作对象属性,孰好孰坏,我也不懂,我也是初学者. 直接上代码 字母类 //字母类 functi ...

  4. java d打字游戏_java实现快速打字游戏

    本文实例为大家分享了java实现打字游戏的具体代码,供大家参考,具体内容如下 import java.util.Random; import java.util.Scanner; public cla ...

  5. c语言打字母游戏,C语言实现打字游戏

    该程序在TC3.0环境下编译通过,共有9个函数.分别是printScreen,start,leave,levelChoice,newWord,moving,wordHit,result和main. 其 ...

  6. 计算机课上玩的打字游戏,上电脑课时偷偷玩的3个游戏,这些都没玩过,别说自己玩过游戏!...

    原标题:上电脑课时偷偷玩的3个游戏,这些都没玩过,别说自己玩过游戏! 大家好啊,小编又和大家见面了,想必大家都知道,电脑在被发明出来以后,游戏也是随之而然的被加入到了电脑中,而在一开始的时候电脑的游戏 ...

  7. 计算机课上玩的打字游戏,人教版信息技术三上第7课《玩打字游戏》教案.doc

    人教版信息技术三上第7课<玩打字游戏>教案.doc 文档编号:235342 文档页数:3 上传时间: 2018-06-02 文档级别:普通资源 文档类型:doc 文档大小:117.77KB ...

  8. 基于html5的英语打字游戏(纯手工,不贴图)

    基于html5的打字游戏 引言 一.打字游戏是一款耳熟能响的桌面应用程序,通过该程序可以将英语单词学习和娱乐有效的结合起来.但是在这个大量应用从c/s架构往b/s架构过渡的年代,我们将通过html5等 ...

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

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

最新文章

  1. javascript和jq的事件委托
  2. mysql 分库分表 建表_【分库分表】sharding-jdbc实践—分库分表入门
  3. JS字符串的下划线命名和驼峰命名转换
  4. POJ 2955 (区间DP)
  5. 西工大学计算机专业考研容易吗,2022年西北工业大学计算机专业考研成功经验...
  6. python 内置函数:iter()
  7. 一、华为设备telnet命令配置
  8. 数据库课设之学生信息管理系统
  9. labview虚拟心电监测系统_使用LabVIEW进行心电信号处理
  10. [转帖]SPARC简介
  11. AF_XDP socket 测试
  12. 智能眼镜是头戴式摄像机
  13. Q-M法(列表法)化简 C++ 实现
  14. ubuntu 16.04 nivida显卡驱动更新步骤
  15. 【商业模式学习感悟】《B站:叛逃二次元和想破开的圈》读后感
  16. Nico靠接外包,6个月当了老板,这操作绝了...
  17. PTY allocation request failed on channel 0
  18. 外汇交易中应用CCI指标进行趋势交易一单一结的编程实践(五)
  19. cpickle支持的python版本_Python cPickle模块(转)
  20. 交通工具速度Java

热门文章

  1. 中文速读微生物组(宏基因组)前沿文献——这个可以有
  2. R语言dplyr包的top_n函数返回dataframe或tibble的前N行数据、dplyr包的top_frac函数返回dataframe或tibble的前百分之N(N%)的数据
  3. conda创建子环境并注册kernel
  4. python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象
  5. 集成学习VotingClassifier、HistGradientBoostingClassifier、Stacking、Blending
  6. Dickey-Fuller检验+迪基-福勒检验
  7. 数据结构与算法:选择排序
  8. Real-Time DNA Sequencing from Single Polymerase Molecules
  9. strtok()函数详解
  10. 人体姿态估计--Learning Feature Pyramids for Human Pose Estimation