大家好,我是查理。今天教大家制作一个简化版球球大作战
话不不多说,上代码

# -*- coding: utf-8 -*-
# @Time    : 2018/7/30 16:19
# @Author  : G.Hope
# @Email   : 1638327522@qq.com
# @File    : 吃球.py
# @Software: PyCharmimport pygame
import random
import math# 生成随机颜色
def random_color():return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)# 判断是否碰撞,并使大球吃掉小球(小球消失,大球变大)
def eat(ball1, ball2):x1, y1 = ball1['pos']x2, y2 = ball2['pos']x_distance = x1 - x2y_distance = y1 - y2distance = math.sqrt(x_distance ** 2 + y_distance ** 2)if distance < ball1['r'] + ball2['r']:if ball1['r'] > ball2['r']:ball1['r'] = ball2['r'] + ball1['r']all_balls.remove(ball2)else:ball2['r'] = ball2['r'] + ball1['r']all_balls.remove(ball1)if __name__ == '__main__':pygame.init()screen = pygame.display.set_mode((800, 600))screen.fill((255, 255, 255))pygame.display.flip()# all_balls中保存多个球# 每个球要保存:半径、圆心坐标、颜色、x速度、y速度all_balls = [{'r': random.randint(10, 20),'pos': (100, 100),'color': random_color(),'x_speed': random.randint(-1, 1),'y_speed': random.randint(-1, 1)},{'r': random.randint(10, 20),'pos': (200, 200),'color': random_color(),'x_speed': random.randint(-1, 1),'y_speed': random.randint(-1, 1)},{'r': random.randint(10, 20),'pos': (300, 300),'color': random_color(),'x_speed': random.randint(-1, 1),'y_speed': random.randint(-1, 1)}]while True:for event in pygame.event.get():if event.type == pygame.QUIT:exit()if event.type == pygame.MOUSEBUTTONDOWN:# 点一下鼠标创建一个球ball = {'r': random.randint(10, 20),  # 随机大小'pos': event.pos,  # 设置圆心为当前鼠标点击的坐标'color': random_color(),'x_speed': random.randint(-1, 1),  # 随机方向'y_speed': random.randint(-1, 1)}# 保存球all_balls.append(ball)# 刷新界面screen.fill((255, 255, 255))for ball_dict in all_balls:# 取出原理的x,y坐标以及他们的速度x, y = ball_dict['pos']x_speed = ball_dict['x_speed']y_speed = ball_dict['y_speed']if x >= 800:  # 设置边界并更改移动方向x = 800x_speed = -1ball_dict['x_speed'] = x_speedif x < 0:x = 0x_speed = 1ball_dict['x_speed'] = x_speedif y >= 600:y = 600y_speed = -1ball_dict['y_speed'] = y_speedif y < 0:y = 0y_speed = 1ball_dict['y_speed'] = y_speedx += x_speedy += y_speedpygame.draw.circle(screen, ball_dict['color'], (x, y), ball_dict['r'])# 更新球对应的坐标ball_dict['pos'] = x, ypygame.display.update()# 碰撞for ball1 in all_balls:for ball2 in all_balls:if ball1 == ball2:continueeat(ball1, ball2)

制作不易,记得三连哦

用Python制作一个简单的球球大作战相关推荐

  1. Python制作一个简单的抽奖软件(二)

    Python制作一个简单的抽奖软件(二) 认识QT 因为都对 QT和tkinter都没用过,之前简单使用tkinter后发现,界面调整不太好弄.然后度娘了之后,QT是强大GUI库之一,很多人都推荐它. ...

  2. 如何用Python制作一个简单的二维码生成器

    目录 前言 1.安装第三方库 2.QRCode参数解释 3.自定义二维码生成器 4.给二维码加图片 5.全部代码 6.结果 前言 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick ...

  3. 使用Python制作一个简单的刷博器

    呵呵,不得不佩服Python的强大,寥寥几句代码就能做一个简单的刷博器. import webbrowser as web import time import oscount=0 while cou ...

  4. 教你如何使用 python 制作一个简单的密码本

    不知道大家了解不了解暴力破解?我稍微解释下: 假如有个无聊的人用锁把我的电驴锁了,我并不知道与之匹配的钥匙长什么样,但是我有几乎无数把钥匙可以去试开这把锁. 这样看来,只有我肯浪费时间用一把把钥匙去开 ...

  5. python初级教程 doc_3分钟教你用python制作一个简单词云|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 首先需要安装三个包: # 安装:pip install matplotlib # 安装:pip insta ...

  6. python制作一个简单的文字游戏——零基础学python 004

    前言: 之前我们简单的学习了一些函数,所谓学以致用.那么我们看看用这几个函数能够做出怎么样的文字游戏? 游戏的思路很简单,要求输入一个程序已经设置好的数字,猜中了返回一句话话,猜错了返回一句话:然而只 ...

  7. python html压缩包,用python制作一个简单html压缩

    简介 举洪荒之力,集天地精华,亲自操刀,用python玩一玩. 真是,虽有嘉肴,弗食,不知其旨也:虽有至道,弗学,不知其善也. 这个压缩很low,并没有什么留掰的,非常简单,可以说只比压缩前小一点点而 ...

  8. python制作一个简单的udp聊天器

    UDP协议 英文名:User Datagram Protocol 中文名:数据报协议 协议说明:UDP是一种面向无连接的传输层通信协议. 举例:发短信,不需要双方建立连接,数据报的大小应限制在64k以 ...

  9. 用python制作一个简单的在线单词翻译器

    python在线单词翻译器 老早之前写的,就是把输入的内容提交到翻译网页,然后把相应的数据打印出来而已,有时候忘记一些什么单词的时候还是蛮好用的. import requests import url ...

最新文章

  1. php简单算法之冒泡排序
  2. 用工具进行CAD转换图片的过程
  3. char和byte的区别
  4. c 调用java包_C#调用java代码(IKVMC)
  5. 实战|利用机器学习解决一个多分类任务
  6. c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置
  7. boot返回码规范 spring_sprigboot-new-coding-standards
  8. win10 + python3.6.1 + tensorflow1.10 + cuda9.0 + cudnn7.2
  9. Android:Android学习路线图
  10. 深度学习解释:Precision、Recall、IoU、Ap/mAp
  11. python自带的帮助文档
  12. Shopee数据获取逻辑
  13. HITB_Binary_100_writeup
  14. 高山大学2019级学员名单:但斌、王高飞、胡玮炜等入选
  15. C++查詢wry.dat中的IP地址信息
  16. poscms清除html,POSCMS开源内容管理系统 v3.6.0 升级说明
  17. 假如工资有段位,你是个啥?
  18. windows录屏html文件,windows录屏怎么录?还有其他方法吗?
  19. 使用HTML及简单的JavaScript脚本制作一个点名器
  20. 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置!

热门文章

  1. 20款可嵌入网站和博客的免费音频播放器
  2. HGU3336 Count the string (KMP Next数组的应用)
  3. Freckles - 九度 OJ 1144
  4. Java面试题 基本类型和包装类对象使用 == 和 equals进行比较的结果?
  5. 致远OA,小地球启动报错:读取系统初始化信息失败!
  6. 航拍江西仙女湖初晴 云雾缭绕宛如仙境
  7. Win | Scoop 安装使用
  8. 【Leetcode】526. Beautiful Arrangement
  9. HTML大文件上传解决方案实例代码
  10. 原 the app referencesnon-public selectors in payload