点击蓝字 关注我们

(开玩笑的,怎么可能有女朋友……)

每个网瘾少年心中,都有一个开发游戏的梦想……

从贪吃蛇、扫雷、吃豆人,到红警、CS、传奇、梦幻西游,这些游戏伴随了一代又一代人的成长。

但游戏开发在互联网界,一直算是门槛较高的方向。对于非专业的开发者来说,开发一款游戏一直是件让人望而却步的事情。

随着 Pygame 框架的出现,一切都变简单了。

Pygame 是 Python 中的一个库,可以帮助你快速实现一个游戏。

虽然市场上很少有人直接用 pygame 进行商业游戏的研发,但 pygame 却在游戏制作中发挥了巨大的作用,因为它可以快速搭建游戏原型,尤其是 2D 游戏。

很多独立游戏制作者也会通过 pygame 去创建游戏并发布到 steam 平台。

除此之外,pygame 还存在一个更大的价值——教学价值。pygame 所呈现出的效果是直观的、充满趣味的,学习效率要远远大于基于控制台的学习方式。

所以用 Pygame 开发游戏,还可以帮助你快速提高 Python 技术。

今天要介绍的这个 Python 项目就可以轻松实现你成为游戏开发者的想法,还能帮助你哄女朋友开心追心仪的女神等等。

那就是用 Pygame 实现女朋友最喜欢的游戏——口红机,效果如下:

第一步:制作启动画面

import pygame
import random# pygame 初始化操作
pygame.init()# 设置游戏窗口的宽度和高度
screen = pygame.display.set_mode([400, 800])# 设置游戏窗口标题
pygame.display.set_caption("游乐场口红机")
# 加载背景图片
bg = pygame.image.load("./images/bg.png")
screen.blit(bg, (0, 0))# 小口红图片
a_test = pygame.image.load("./images/a_img.png")while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()# 随机生成坐标值ran_pos = (random.randint(10, 300), random.randint(100, 600))screen.blit(a_test, ran_pos)# 游戏整体更新pygame.display.update()

第二步:旋转吧西瓜转盘!

在真实游乐场口红机中,西瓜或其它目标物的旋转角度是随机的,并且可以反复旋转,我们用代码复制这个功能。

import pygame
import randomfrom .. import tools, setup
from .. import constant as Cclass Target(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = self.load_image()self.rect = self.image.get_rect()# 初始坐标及矩形区域self.rect.x = (C.SCREEN_W - self.rect.width) / 2self.rect.y = 100# 获取中心点self.center = self.rect.center# print(self.center)# 设置起始旋转角度self.angle = 0# 判断当前目标图像是否正在旋转,默认为 False 不在旋转中self.is_rotate = False# 判断是顺时针旋转,还是逆时针旋转,默认逆时针旋转 anti-clockwise,顺时针变量值为 clockwiseself.direction = "anti-clockwise"def load_image(self):sheet = setup.GRAPHICS["target_1"]# 图片缩放到 290 x 290sheet = pygame.transform.scale(sheet, (290, 290))return sheetdef rotated(self):return self.rotate_image, self.rotate_image_rectdef rotating(self):self.rotate_image = pygame.transform.rotate(self.image, self.angle)self.rotate_image_rect = self.rotate_image.get_rect(center=self.center)def update(self):# 默认进行该函数,目标图像为不旋转状态,进入该分支语句if not self.is_rotate:# 随机生成一个目标角度self.random_angle = random.randint(90, 300)# 旋转状态修改为 Trueself.is_rotate = True# 当旋转状态为 True 时进行后续判断if self.is_rotate:# 如果当前角度小于目标角度并且旋转角度是逆时针if self.angle < self.random_angle and self.direction == "anti-clockwise":# 角度执行+1 操作self.angle += 1# 当旋转角度 == 目标角度时if self.angle == self.random_angle:# 旋转方向切换为顺时针self.direction = "clockwise"# 如果为顺时针,角度不断减小if self.direction == "clockwise":self.angle -= 1# 当角度等于-1,表示目标图片已经回复初始位置if self.angle == -1:# 设置旋转状态为 False,主要目的为重新生成目标角度self.is_rotate = False# 旋转方向为 逆时针self.direction = "anti-clockwise"# 调用旋转方法self.rotating()

效果如下:

如果你想了解更多编程内容,欢迎加入蓝桥云课专属【代码交流群】吧~

手把手教你用 Pygame 复刻游戏相关推荐

  1. python 儿童 游戏_少儿编程分享:手把手教你用Python编写战斗机游戏(完)

    原标题:少儿编程分享:手把手教你用Python编写战斗机游戏(完) 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑 .接下来,我们要把单调的白色矩形换成好看的图片. 在前面的代码中,我们用 ...

  2. 怎么用python做战斗机_少儿编程分享:手把手教你用Python编写战斗机游戏(四)

    游戏分享:手把手教你用Python编写 战斗机游戏(四) 2018.1.25 飞机大战就到这里啦 你的飞机大战做出来了吗 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑.接下来,我们要把单 ...

  3. 译文1 手把手教你用cocos2d开发iphone游戏

    手把手教你用cocos2d开发iphone游戏-译文1 (2011-07-07 16:37:00) Learning Cocos2d – A Hands On Guide to Building iO ...

  4. 拾起童年的回忆 - 手把手教你制作飞机大战小游戏

    拾起童年的回忆 最记得小学时,每逢放学便会打开电视机,接上红白机/小霸王,插上一张游戏卡带,魂斗罗.超级玛丽.冒险岛.足球小将,拳王.飞机大战.雪人兄弟--,这些游戏到现在还是如数家珍,一张游戏卡可以 ...

  5. 手把手教你使用Pygame制作飞机大战小游戏,4万字超详细讲解!

    点击上方"早起Python",关注并"星标" 每日接收原创Python干货! 大家好,偷学Python系列是由小甜同学从初学者的角度学习Python的笔记,其特 ...

  6. 黑魂复刻游戏的玩家输入模块——Unity随手记(2021.3.14)

    文章目录 前言 今天实现的内容: 按键封装 获取输入及输入信号优化 输入的渐变 模块的软开关 处理输入 BUG以及缺陷: 值得注意的: 前言 好久不见,在接下来的Unity随手记里,我会学着B站上的视 ...

  7. 手把手教你用cocos2d开发iphone游戏-译文1

    Learning Cocos2d – A Hands On Guide to Building iOS Gaming 说明:本书的英文版美国当地时间7月8日出版,译文基于该书的Rough Cut版本( ...

  8. python入门小游戏之跳一跳_从零基础开始,用python手把手教你玩跳一跳小游戏,直接打出高分...

    这对于很多人来说,可能是已经过时的游戏,但是对于python入门来说,却是一个非常值得学习的项目. TONOW收集了很多有关python入门的项目案例,包含了相应的教程和源码,哪怕你从未接触编程,也通 ...

  9. python 玩公众号游戏_从零基础开始,用python手把手教你玩跳一跳小游戏,直接打出高分...

    这对于很多人来说,可能是已经过时的游戏,但是对于python入门来说,却是一个非常值得学习的项目. 我们收集了很多有关python入门的项目案例,包含了相应的教程和源码,哪怕你从未接触编程,也通过这些 ...

最新文章

  1. MPB:甘肃省科学院祝英等-药用植物地下茎内生真菌的分离纯化及鉴定
  2. js折线图设置y轴刻度_手绘风格的 JS 图表库:Chart.xkcd
  3. 用HTTP协议连接网络(HttpURLConnection)
  4. 【CKEditor】下载历史版本4.8.x
  5. Python基础知识点总结
  6. 四川巴中中学2021高考成绩查询,巴中市高中排名(2021巴中市中学前十排名)
  7. mysql in 文本_MySQL_mysql 的load data infile,LOAD DATA INFILE语句从一个文本文 - phpStudy...
  8. 在计算机桌面中选择了隐藏如何显示不出来的,电脑桌面文件被隐藏了怎么办
  9. 删除win7系统100M隐藏分区
  10. html版权登记怎么打,版权符号怎么输入_Html版权符号怎么打
  11. 幂指函数求导公式——备忘
  12. java实现正态分布累积分布,标准正态分布变量的累积概率分布函数
  13. rstp 小米网络摄像头_小蚁摄像头实时同步视频到群晖 nas(2)—— 使用 rtsp 协议同步...
  14. 对接支付通道如何收费?支付接口收费标准
  15. 后羿采集器怎么导出数据_后羿采集器如何采集亚马逊评论
  16. Hotkeycontrol录制宏
  17. spark、hadoop、storm、solr、es在车辆分析上的分析与比较
  18. Ever-Flowers IN Never-Dream(19)
  19. 从git下载代码到本地
  20. 怎样快速上手深度学习?谷歌官方推荐的 TensorFlow 2 “豹书”来了!

热门文章

  1. DSPE-PEG-SH, 磷脂PEG巯基
  2. 电机调速设计并用matlab仿真,基于MATLAB的双闭环调速系统设计与仿真
  3. 不愿意和别人打交道_一个人不愿意和同事打交道,大多是这3个原因,你了解吗...
  4. 很多人遇到问题:win10锁屏唤醒后程序全部关闭
  5. tcp/ip的模型与原理
  6. VB.NET绘图8---总结
  7. 在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言[转]
  8. UI设计和平面设计区别是什么?
  9. 《沈剑架构师训练营》第7章 - 架构解耦
  10. 南柯服务器压力,性能/负载/压力测试 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...