IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> python pygame实战1: 小球碰撞balls collision -> 正文阅读

[游戏开发]python pygame实战1: 小球碰撞balls collision

作者:recommend-item-box type_blog clearfix

学了点基础, 开始实战吧, 先做个小球碰撞的小游戏:

import pygame
import random
import numpy as np

SCREEN_WIDTH =500
SCREEN_HEIGHT = 400 ?
FPS = 50
? ? ? ?
class circle(pygame.sprite.Sprite): ? ? ? ?
? ? def __init__(self, screen,r=20): ?
? ? ? ? pygame.sprite.Sprite.__init__(self) ?
? ? ? ? self.r=r
? ? ? ? self.screen=screen
? ? ? ? self.color=(random.randrange(50,255),random.randrange(50,255),random.randrange(50,255))
? ? ? ? self.image = pygame.Surface((2*r,2*r))
? ? ? ? self.image.set_colorkey((20,120,20))
? ? ? ? self.image.fill((20,120,20))
? ? ? ? self.rect=self.image.get_rect()
? ? ? ? self.rect.x = random.randrange(SCREEN_WIDTH-self.rect.width)?
? ? ? ? self.rect.y = random.randrange(SCREEN_HEIGHT-self.rect.height)
? ? ? ? pygame.draw.circle(self.image,self.color,(self.r,self.r),self.r)?
? ? ? ? self.radius=r ?#this makes ".collide_circle" to detect using circle,rather than rect
? ? ? ? self.speedx = random.randrange(1,5)
? ? ? ? self.speedy = random.randrange(1,5)?
? ? def update(self):
? ? ? ? self.rect.move_ip(self.speedx, self.speedy)
? ? ? ? self.v=np.array([self.speedx,self.speedy])
? ? ? ? if (self.rect.y<=0 or self.rect.y>=SCREEN_HEIGHT-self.rect.height):
? ? ? ? ? ? self.speedy=-self.speedy
? ? ? ? if self.rect.x<=0 or self.rect.x>=SCREEN_WIDTH-self.rect.width:
? ? ? ? ? ? self.speedx=-self.speedx
? ? ? ? self.screen.blit(self.image, self.rect)
? ? ? ? ? ??
? ? ?
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((SCREEN_WIDTH , SCREEN_HEIGHT))
c1=circle(screen,30)
balls=pygame.sprite.Group()
for i in range(10):
? ? c=circle(screen)
? ? balls.add(c)
run=True
while pygame.sprite.spritecollideany(c1,balls): #避免一开始就碰撞在一起
? ? c1=circle(screen,30)
while run:
? ? for event in pygame.event.get():
? ? ? ? if event.type == pygame.QUIT:
? ? ? ? ? ? run=False
? ? c=pygame.sprite.spritecollideany(c1,balls)
? ? if c: ? ?
? ? ? ? #exchange the speed of c1, and c2
? ? ? ? c1.speedy,c.speedy=c.speedy,c1.speedy
? ? ? ? c1.speedx,c.speedx=c.speedx,c1.speedx
? ? ? ? screen.fill((220, 0, 220)) ? ? ? ? ? ? ? ? ??
? ? else:
? ? ? ? screen.fill((0,0,0))
? ? c1.update()
? ? balls.update()
? ? pygame.display.update()
? ? clock.tick(FPS)

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:56:40  更:2021-11-09 19:59:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:45:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码