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

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)

python pygame实战1: 小球碰撞balls collision相关推荐

  1. pygame动画演示小球碰撞

    使用pygame实现动量定理的小球碰撞演示动画 动量定理我们在高中的时候就已经接触过了,是十分重要的物理定理.其中的完全弹性碰撞(机械能守恒)是十分典型的例子,机械能守恒和动量定理两个公式就可以推出小 ...

  2. python pygame实战《飞船大战外星人》

    学了一个月的python,最后两天学了下pygame,以一个小游戏结尾这段旅程. 游戏规则如下: 玩家可以通过上下左右四个键控制飞船移动,而且按住键不放可以联系移动,而不需要不断地按键松键来控制. 玩 ...

  3. PYTHON pygame库实战——实现双人弹球小游戏

    PYTHON pygame实战--运用pygame库实现双人弹球小游戏 使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截 ...

  4. 保姆级教学——Python+Pygame怎么实现吃豆豆游戏

    耽搁十几天的时间,我顺利的从阳转阴啦, 以后的日子一切恢复正常,好好工作,积极分享.希望在座的小伙伴阳了的全部健康转阴,没阳的全部不会变阳,新的一年,一切顺顺利利. 不知道最近大家学习得怎么样?有没有 ...

  5. Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它。

    导语 前段时间不是制作了一款升级版本五子棋的嘛! 但是居然有粉丝私信我说: "准备拿到代码玩一下ok过去了!太难了准备放收藏夹落灰q@q~" 所噶,今天先放一个简易版本的五子棋给大 ...

  6. Python+pyGame 打砖块游戏

    注:以下程序为本人原创,写的不好,若有好的建议,望留言告知.而若能帮助一二访客,幸甚! 最近搞"科研"搞的蛋都碎了... 思吾之理想是将计算机玩弄于股掌之上(将计算机组成原理.操作 ...

  7. Python pygame 坦克大战

    Python pygame 坦克大战 import pygame, time, random from pygame.sprite import SpriteSCREEN_WIDTH = 750 SC ...

  8. python +pygame 制作五子连珠小游戏

    python +pygame 制作五子连珠小游戏 学习python半年了,今天分享一个利用pygame制作的五子连珠游戏. 一.代码: 1.球类,ball.py """ ...

  9. 【Pygame实战】经典的坦克大战游戏,勾起童年无限回忆《坦克大战小霸王版》

    导语 哈喽!哈喽--我是木木子 今天来升级下之前写的坦克大战游戏嘛,哈哈哈 其实也不算是修改,就是稍微的调试一下!​​ 因为之前写的界面都是英文的 ,有的小伙伴儿英文一点儿都不会的可能看着别扭,今天来 ...

  10. js小球碰撞js特效

    下载地址 小球碰撞特效.引用test.js文件.我目前做的是10个小球同时出现,你也可以根据你的需要进行修改.如果你想要小球随机出现的话,你只需要把58行的代码解注,然后57行的注释就行了.这个写法还 ...

最新文章

  1. Kali Linux攻防系统(三:在Kali Linux系统中配置安全测试浏览器及系统清理备份)
  2. 第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页...
  3. 数据源(连接池)开发步骤
  4. jqgrid 启用键盘操作bindKeys
  5. jquery Ajax请求本地json
  6. python slice是共享内存吗_python共享内存实现进程通信
  7. jitter 如何优化网络_抖音优化该怎么做?
  8. C. Diverse Permutation(Codeforces Round #275(div2)
  9. 解密昇腾AI处理器--DaVinci架构(总览)
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的少儿网站教育管理系统
  11. MapReduce任务学习系列
  12. SQL Server 2000中的完整备份、差异备份操作
  13. yii验证在一个数组内_PHP实现一个轻量级容器
  14. Vue中的自定义指令
  15. DT浪潮下,大数据在交通管理中的应用实践
  16. max2 android9.0,乐视max2 安卓9.0刷机包
  17. 程序员漫画-加油啊!
  18. 点阵字库HZK12 HZK16 HZK24 ASC12 ASC16 简介 及 使用方法[附源码]
  19. 计算机科技学术讲座心得体会,学术报告心得体会
  20. Excel vlookup筛选两列的重复项

热门文章

  1. SSM框架整合(参考尚硅谷视频和文档
  2. mapgis转arcgis
  3. C1见习工程师(一)
  4. 【UWB定位】 - DWM1000模块调试简单心得 - 3
  5. 期末考试-第一章-计算机视觉综述知识整理
  6. IDM:从Google Drive快速直接下载大文件
  7. Ubuntu使用总结二
  8. 社交网络模型及属性介绍
  9. 十天征服单片机百度云_郭天祥十天征服单片机视频下载地址
  10. spring5.X源码构建