基于PyGame的乒乓球和滑雪游戏

昝道广

概述

  • 前言

  • 乒乓球游戏规则

  • 乒乓球游戏图形界面

  • 乒乓球游戏部分代码

  • 滑雪小游戏图形界面

  • 滑雪小游戏规则

  • 滑雪小游戏部分代码

  • 技术分析

  • 后记

前言

首先阿广确实有点皮了,近期公众号上商业互吹和广告比例偏高,以后会注意广告篇幅和文章质量,请多多谅解。前天由于我竞选了我们学校的十大优秀学生,所以我使用公众号进行了拉票。导致期间个别粉丝给我发消息,谈道“取关取关!”,当我想挽留一下的时候,却出现了红色叹号,令我久久不能忘怀...他一定是这样认为:”作为一个分享知识、传播知识的平台,就应该秉着利他的基本原则,每天都发知识干货“。

说实在的,我无法做到完全每天都发干货,因为我需要生存,需要生活。但是我会做到以“分享知识、传播正能量“为主线,其他为辅线。令言之,不接广告的知识平台,不会做得长久,因为广告和你们的阅读和支持才是我们办下去的动力。毫不夸张地说,我写一篇原创需要前期的大量阅读学习、代码调试和实现,使用幽默的语言讲出来还需要至少若干个小时的时间。希望大家能够谅解每个人的处境,今天我需要大家的帮忙,大家为我帮忙;明天您们有亟需解决的问题,也可以向阿广求助,定倾囊相助。对于我来说,十大优秀学生称号没有任何实际性的意义,或言之是为了我们济南校区的荣誉而战,所以我会拼命而为。在此非常感谢给我拉票和点赞的朋友们,非常感谢你们的持续支持和关注!

下面是乒乓球小游戏和滑雪小游戏,很好玩,希望大家通过此代码理解pygame库的使用,为开发其他游戏打好基础。

乒乓球游戏规则

  • 使用鼠标模拟球拍,接住来回反弹、速度不定的球,如果球碰到屏幕的顶端,则玩家得一分;反之,如果球掉下屏幕得底部,则玩家少一条命。

  • 玩家一共三条命,如果全部用完则游戏结束,并显示分数。

乒乓球游戏图形界面

游戏界面

游戏结束界面

乒乓球部分代码

滑雪小游戏规则

滑雪小游戏图形界面

滑雪小游戏部分代码

import pygame, sys, randomskier_images = ["./bg_img/skier_down.png", "./bg_img/skier_right1.png", "./bg_img/skier_right2.png","./bg_img/skier_left2.png", "./bg_img/skier_left1.png"]class SkierClass(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = pygame.image.load("./bg_img/skier_down.png")self.rect = self.image.get_rect()self.rect.center = [320, 100]self.angle = 0def turn(self, direction):self.angle = self.angle + directionif self.angle < -2:  self.angle = -2if self.angle >  2:  self.angle =  2center = self.rect.centerself.image = pygame.image.load(skier_images[self.angle])self.rect = self.image.get_rect()self.rect.center = centerspeed = [self.angle, 6 - abs(self.angle) * 2]return speeddef move(self, speed):self.rect.centerx = self.rect.centerx + speed[0]if self.rect.centerx < 20:  self.rect.centerx = 20if self.rect.centerx > 620: self.rect.centerx = 620class ObstacleClass(pygame.sprite.Sprite):def __init__(self, image_file, location, type):pygame.sprite.Sprite.__init__(self)self.image_file = image_fileself.image = pygame.image.load(image_file)self.location = locationself.rect = self.image.get_rect()self.rect.center = locationself.type = typeself.passed = Falsedef scroll(self, terrainPos):self.rect.centery = self.location[1] - terrainPosdef create_map(start, end):obstacles = pygame.sprite.Group()locations = []gates = pygame.sprite.Group()for i in range(10):row = random.randint(start, end)col = random.randint(0, 9)location  = [col * 64 + 20, row * 64 + 20]if not (location in locations):locations.append(location)type = random.choice(["tree", "flag"])if type == "tree": img = "./bg_img/skier_tree.png"elif type == "flag":  img = "./bg_img/skier_flag.png"obstacle = ObstacleClass(img, location, type)obstacles.add(obstacle)return obstaclesdef animate():screen.fill([255, 255, 255])pygame.display.update(obstacles.draw(screen))screen.blit(skier.image, skier.rect)screen.blit(score_text, [10, 10])pygame.display.flip()def updateObstacleGroup(map0, map1):obstacles = pygame.sprite.Group()for ob in map0:  obstacles.add(ob)for ob in map1:  obstacles.add(ob)return obstacles

由于篇幅原因,两款游戏只展示部分代码,详情请查看源码请自行去github,或者点击文末的阅读原文获取源码。

https://github.com/zandaoguang/pygame_pingpang_skier

技术分析

  • PyGame库:

    PyGame是被设计用来写游戏的python模块集合,PyGame是在优秀的SDL库之上开发的功能性包。使用python可以导入PyGame来开发具有全部特性的游戏和多媒体软件,PyGame是极度轻便的并且可以运行在几乎所有的平台和操作系统上。PyGame包已经被下载过成千上万次,并且也被访问过成千上万次。

后记

鸟大了,什么林子都飞。吐槽今天遇到的一个黑粉。为了提升微信群的内容质量,我将微信群名字前面加上了【禁非合作推文】,结果...

结果退群之后还祝我新年快乐...What!?

视学算法读者发表了自己的意见,在此谢谢各位合作伙伴和读者的支持。

对于今天给大家带来的小游戏,大家可以进一步的进行思考。从小时候抱着手机电脑打游戏,到现在能开发出简单的小游戏,是一种进步,更是一种责任。从牙牙学语时的天真无邪,到走向社会的我无尔诈,尔无我虞,岂是后知后觉的成长,亦是矢志不渝的考量。所写的每一行代码都代表着自己不求回报的执着,都代表着咬定青山不放松的大无畏精神,代表着为了成为人上人的壮志凌云。

现在大部分人都活在“道理我都懂,但是我做不到”的千千世界里,但是我希望我们都能够在若干年之后,能够以”初听不识曲中意,再听已是曲中人“的心态,语重心长的向朋友”吹捧”着自己的当年做的那些事,讲解着属于自己的故事!

推荐阅读

【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。

基于PyGame的乒乓球和滑雪小游戏相关推荐

  1. 基于pygame的消消乐小游戏开发

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,基于pygame的消消乐小游戏开发. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术和网络技 ...

  2. python基于pygame的飞机大作战小游戏

    基于pygame的飞机大作战小游戏,适合新手,不能直接运行,只能在命令行进入当前游戏目录,输入python game.py才能够运行,尚不知道是什么原因 游戏截图如下,我们用黄色的圆圈代表敌机, 代码 ...

  3. 基于pygame的兔子吃月饼小游戏

    小游戏规则简介 玩家通过"wsad"或者"↑↓←→"键控制兔子移动,使得兔子可以吃到更多的月饼,月饼一旦生成之后位置不会变,也不会消失,就等着兔子去吃,就是这么 ...

  4. python3.7魔塔游戏_基于pygame的开发:魔塔小游戏开发

    前言 第一次写博客,如果写的不好欢迎评论指正. 前端时间跟着廖雪峰大神的教程学习了python,本着"实践是检验真理的唯一标准",我尝试着使用pygame库来开发经典的策略RPG& ...

  5. Python小游戏————滑雪小游戏代码开源

    ♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,励志爬上IT介顶峰,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约 ...

  6. python弹球游戏双球代码键盘操作_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

  7. python小猴子摘桃子的故事_基于Python-Pycharm实现的猴子摘桃小游戏(源代码)

    源码及注释: import pygame from sys import exit from random import randint import time import os # 定义窗口分辨率 ...

  8. 基于LabVIEW的飞机大作战小游戏(可做毕设)

    一.前言 Python是目前相当流行的一门编程语言,网上有人用Python做了一个<飞机大作战>的小游戏,并且出了一份视频教程,很有意思."基于Python的飞机大作战小游戏&q ...

  9. python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinte ...

最新文章

  1. CentOS5.6系统下mysql5安装
  2. android Hander Service 广播的综合使用案例
  3. 分类决策树 回归决策树_决策树分类器背后的数学
  4. 研发协同平台持续集成实践
  5. Buildroot文章翻译
  6. python3基础知识一
  7. selenium-行为链-ActionChains-0223
  8. Python+tkinter动态创建与销毁组件小案例
  9. 什么是机器学习?(下)
  10. 拆分SharePoint 2013 中CreatedModifiedInfo 的时间
  11. ITAA学员的经典对白
  12. 《算法精解:C语言描述》勘误
  13. 制定项目进度计划的过程
  14. 大数据分析技术与方法有哪些?
  15. 重磅!微信 3.0 客户端支持刷朋友圈了!从此爱上上班还是无心上班?
  16. 详述 Redis 选择单线程模型的原因以及 I/O 多路复用
  17. HOUR 11 Developing Advanced Pointers
  18. ASR中常用的语音特征之FBank和MFCC
  19. 【无标题】adsa da das
  20. leetcode加一

热门文章

  1. 对数函数定义域和值域_呆哥数学每日一题 —— 复合函数值域
  2. 报告!插件×元宵来啦
  3. 懒人神器 !一个创意十足的 Python 命令行工具
  4. 技术大咖齐聚爱数智慧人机交互技术论坛 | CNCC2021
  5. AI科技大本营在线公开课大放送(附演讲PPT)
  6. Neurala与CSDN宣布战略合作,将一站式AI平台BrainBuilder带给中国开发者
  7. Linux 之父归来!
  8. Spring MVC 五大组件
  9. IntelliJ IDEA 2021.1正式发布!快来看看又有哪些神仙功能加入!
  10. 因为BitMap,白白搭进去8台服务器...