Pygame小游戏:无敌斗牛士

哔哩哔哩视频网址:https://www.bilibili.com/video/BV1ZP4y167cZ

众所周知,马上就春节了,那就是兔年了,今天我就教大家怎么把牛年的牛给抓回来……(逃

1.图片素材

做个游戏,没有素材肯定是不行的

但是小编已经给大家准备好了,给大家放在最后了。

2.直接开干

首先,留下最基本的框架(没有配置好pygame的点这里配置)

#coding:utf-8
import pygame
from pygame.locals import * # 导入pygame包
pygame.init() #初始化pygamecanvas = pygame.display.set_mode((1000,700))
pygame.display.set_caption("无敌斗牛士")while True:pygame.display.update() # 更新屏幕内容

接着,导入素材

bg = pygame.image.load("images/bg.png")
bull_img = pygame.image.load("images/bull.png")
rope_img = pygame.image.load("images/rope.png")
win = pygame.image.load("images/win.png")
lose = pygame.image.load("images/lose.png")
bow = pygame.image.load("images/bow.png")

设置事件

state = "RUNNING"
on_off = 0
def handleEvent():global on_off,statefor event in pygame.event.get():if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:pygame.quit()sys.exit()if event.type == KEYDOWN and event.key == K_SPACE:on_off = 1

创建绳索类

class Rope():def __init__(self,x,y,width,height,img):self.x = xself.y = yself.width = widthself.height = heightself.img = imgself.speedY = -1def paint(self):canvas.blit(self.img,(self.x,self.y))def move(self):global on_offif on_off == 1:self.y += self.speedY * 10if self.y < 400:self.speedY = 1elif self.y > 600:self.speedY = -1on_off = 0def hit(self,b):return self.y == b.y and self.x + 40 > b.x and self.x < b.x + 40rope = Rope(385,600,39,52,rope_img)

创建牛类

class Bull():def __init__(self,x,y,width,height,img):self.x = xself.y = yself.width = widthself.height = heightself.img = imgdef paint(self):canvas.blit(self.img,(self.x,self.y))def move(self):self.x = self.x + 10if self.x > 1000:self.x = 0bull = Bull(0,400,192,141,bull_img)

设置侦测事件

def comPaint():canvas.blit(bg,(0,0))bull.paint()rope.paint()def comMove():bull.move()rope.move()def checkHit():global on_off,stateif rope.hit(bull):on_off = 0state = "SUCCESS"

最后留下循环

while True:if state == "RUNNING":comPaint()comMove()checkHit()elif state == "SUCCESS":comPaint()canvas.blit(win,(0,0))handleEvent()pygame.display.update()pygame.time.delay(10)

完整代码如下(我中间加了一些输出的调试,对游戏运行没什么太大的影响):

import pygame,sys
from pygame.locals import *pygame.init()canvas = pygame.display.set_mode((1000,700))pygame.display.set_caption("无敌斗牛士")bg = pygame.image.load("images/bg.png")
bull_img = pygame.image.load("images/bull.png")
rope_img = pygame.image.load("images/rope.png")
win = pygame.image.load("images/win.png")
lose = pygame.image.load("images/lose.png")
bow = pygame.image.load("images/bow.png")print("测试Test")print("[测试Test:1]碰撞检测:False")state = "RUNNING"
print("[测试Test:4]state更改为RUNNING")on_off = 0def handleEvent():global on_off,statefor event in pygame.event.get():if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:print("[测试Test:2]结束测试Test")print("结束测试Test")if state == "RUNNING":raise UserWarning("[Error:1]中途退出")pygame.quit()sys.exit()if event.type == KEYDOWN and event.key == K_SPACE:on_off = 1print("[测试Test:3]on_off更改为1")class Rope():def __init__(self,x,y,width,height,img):self.x = xself.y = yself.width = widthself.height = heightself.img = imgself.speedY = -1def paint(self):canvas.blit(self.img,(self.x,self.y))def move(self):global on_offif on_off == 1:self.y += self.speedY * 10if self.y < 400:self.speedY = 1elif self.y > 600:self.speedY = -1on_off = 0print("[测试Test:3]on_off更改为0")def hit(self,b):return self.y == b.y and self.x + 40 > b.x and self.x < b.x + 40class Bull():def __init__(self,x,y,width,height,img):self.x = xself.y = yself.width = widthself.height = heightself.img = imgdef paint(self):canvas.blit(self.img,(self.x,self.y))def move(self):self.x = self.x + 10if self.x > 1000:self.x = 0def comPaint():canvas.blit(bg,(0,0))bull.paint()rope.paint()def comMove():bull.move()rope.move()def checkHit():global on_off,stateif rope.hit(bull):print("[测试Test:1]碰撞检测:True")on_off = 0state = "SUCCESS"print("[测试Test:4]state更改为SUCCESS")print("[测试Test:5]停止运动")rope = Rope(385,600,39,52,rope_img)
print("[测试Test:6]rope创建")
bull = Bull(0,400,192,141,bull_img)
print("[测试Test:6]bull创建")
while True:if state == "RUNNING":comPaint()comMove()checkHit()elif state == "SUCCESS":comPaint()canvas.blit(win,(0,0))handleEvent()pygame.display.update()pygame.time.delay(10)

给大家看一下游戏效果


3.总结

总体来说,这还是一个很简单的游戏,
游戏源码我放这里了,点击跳转页面下载
喜欢的话点个赞,收藏关注,在分享给你的朋友们吧~

Pygame小游戏:无敌斗牛士相关推荐

  1. pygame小游戏——中国地图拼图小游戏

    pygame小游戏--中国地图拼图小游戏 游戏简介 本游戏用python开发,可对中国各个省份进行拼图,设置三个模式,便于中小学生熟悉中国地图,省份及简称等.通过鼠标拖动省份到地图相应位置,寓教于乐. ...

  2. pygame小游戏框架

    """ pygame小游戏搭建框架 """ import pygame, sys # 导入随机函数模块 import random" ...

  3. Python-项目实战-《外星人入侵》Pygame小游戏-阶段二:外星人来了

    来源于<Python编程从入门到实践>的13章外星人来了. 此为第二阶段: Python-项目实战-<外星人入侵>Pygame小游戏-阶段一:武装飞船(含教程)_Kox233的 ...

  4. python·pygame小游戏--中国象棋(原码附上,免费下载)

    大家好我是小豪,今天给大家带来的是pygame小游戏-中国象棋 因为看到博客上面很多上传了的中国象棋py文件,都是收费的.所以我大胆的上传个免费的-已经把原码上传了,感兴趣的可以去下载. pygame ...

  5. pygame小游戏——消灭病毒保卫城市

    pygame小游戏--消灭病毒保卫城市 游戏简介 近期新冠肺炎疫情肆虐,考虑病毒传播的机理,用pygame开发消灭病毒保卫城市小游戏.本游戏属于策略游戏,通过设定城市人数(决定收入),可购买道具,包括 ...

  6. 【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~(附完整源码)

    前言 嘿!我是栗子同学,欢迎大家阅读这篇<坦克大战双人版游戏编程>. 我相信这个游戏的话对于大家可能会比较难,刚开始学习的话这个代码就直接发给大家玩一玩的 哈,但是大家可以看看这个代码啦! ...

  7. pygame小游戏代码_Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏...

    Py之pygame:有趣好玩--利用pygame库实现一个移动底座弹球的小游戏 目录 输出结果 实现代码 输出结果 ​ 实现代码 # -*- coding: utf-8 -*-#Py之pygame:有 ...

  8. pygame小游戏开发 - 冰雪英雄会

    版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.游戏创意与设定 1.1 游戏创意 1.2 游戏设定 二.功能介绍 三.技术路线 四.游戏效果 五.源码下载 六.作者Info 一.游戏创意 ...

  9. Pygame小游戏:可控制的烟花~过年啦~

    自控烟花升空 实现效果描述 效果 代码地址 解析 main.py core.py fireworks.py 写在最后 实现效果描述 这大过年的不弄点有意思的怎么行呢?可以考虑用编程实现一个烟花升空-爆 ...

最新文章

  1. 热点推荐:程序员路在何方
  2. ElementUI中的el-select中多选回显数据后没法重新选择和更改
  3. LIGHTOJ 1005(组合数学)
  4. c++学习笔记之运算符重载
  5. pip3 install requests Cannot open D:\Python35\Scripts\pip3-script.py
  6. 各种数的由来 真是神奇又有趣
  7. ext 如何判断是否是整数_Excel表格技巧—如何用ISNUMBER判断是否是数值
  8. sharepoint页面添加后台代码
  9. 首个步态识别框架开源了
  10. ATTINY85 和 ATTINY84 与arduino的对应引脚
  11. 银耳椰椰——Alpha冲刺Day08
  12. [Xilinx FPGA] #8 Xilinx Power Estimator[XPE, 功耗估计器]的使用方法
  13. 当前时间的七天前和七天后
  14. 思考与总结:我对管理岗位的思考
  15. html 404错误页面模板,50款国外非常有意思的网页404错误页面模板
  16. android日历提醒小程序源码,微信小程序倒班日历简洁实用demo完整源码
  17. 【甄选靶场】Vulnhub百个项目渗透——项目十一:skytower-1(代理登录ssh,绕过shell禁用)
  18. 计算机属性的Java代码_java - 学计算机的人绝不认输 - 博客园
  19. PowerMill 2017五轴联动编程视频教程
  20. unittest安装教程_unittest模块使用方法

热门文章

  1. S-Paper电子纸在生产车间中的应用
  2. iOS 3DTouch的小细节
  3. v8 8.0以上版本中,V8_COMPRESS_POINTERS引发的崩溃
  4. 模式匹配与正则表达式(一)
  5. DDSM database、INbreast database、MIAS等乳腺MG数据获取方式
  6. 音频、音频属性-采样精度、比特率、音频格式
  7. opencv去除照片红眼
  8. 第二周 Ubuntu的简单介绍与使用
  9. 几万年前,孙悟空的一次删库跑路...
  10. Dev的panelcontrol