码迷,mamicode.com
首页 > 编程语言 > 详细

processing-python-泡泡龙

时间:2019-12-16 22:51:55      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:height   活着   表示   use   urb   mouse   int   back   nbsp   

挂一个无耻搬运工:码农教程。
真的打心底里瞧不起为了蹭热度全网照抄代码的某些人。
再次此声明:代码不是python语言,求某些搬运工不要到处搬运害人。

 

 1 def setup():
 2     size(600,600)
 3     global x, y, vx, vy, bx, by, curBall, aliveBall
 4     global COLOR, c, bc
 5     #球需要有速度,位置,颜色三个属性
 6     #对应x,y坐标、x,y速度、c
 7     
 8     #上方球由于固定,可以只有位置和颜色属性
 9     #对应bx,by和bc
10 
11     x, y = width/2, height-15
12     #初始化球在中下位置,速度为0,颜色随机给一个
13     vx, vy = 0, 0
14     bx, by = [], []
15     curBall = []
16     aliveBall = []
17     COLOR = [color(227,41,54),color(41,188,227),color(41,227,48),color(250,239,13)]
18     #COLOR颜色列表,c和bc表示列表中的第几个颜色,而不是直接表示颜色
19     c = int(random(len(COLOR)))
20     bc = []
21     for i in range(20):
22         for j in range(10):
23             bx.append(i*30)
24             by.append( j*30)
25             curBall.append(len(curBall))#显示的球
26             aliveBall.append(len(aliveBall))#活着的球
27             bc.append(int(random(len(COLOR))))#死了的球
28             
29 def draw():
30     global x, y, vx, vy, bx, by, curBall, aliveBall
31     global COLOR, c, bc
32     
33     background(255)
34     def findDead(i):
35         d = [i]#打中了第i号球,d[]记录接下来找到的应该死掉的球
36         def tmp(i):
37             for j in curBall:
38             #找和i相邻且同色的球,
39             #首先排除掉已经找到的球,然后需要颜色编号相同,其次需要距离小于两球半径之和
40                 if j not in d and bc[j]==bc[i] and dist(bx[i],by[i],bx[j],by[j])<31:
41                     d.append(j)#确认过眼神,找到对的球j,用小本本记下来
42                     #接下来再找刚刚找到的球的下一个应该死掉的球
43                     tmp(j)
44         tmp(i)
45         #这样一直找下一个该死的泡泡龙
46         #就得到了所有该死的球 (逃
47         return d
48     
49     #画会动的球
50     fill(COLOR[c])
51     ellipse(x,y,30,30)
52     
53     for i in curBall:
54         #画每个还没死的球
55         fill(COLOR[bc[i]])
56         ellipse(bx[i], by[i], 30, 30)
57         #检查有没有被撞到
58         if dist(bx[i], by[i], x, y)<30:
59             if bc[i] == c:
60                 #某个同色球被撞到
61                 #找它旁边该死的球,以及旁边该死的球的旁边的该死的球,以及*******
62                 tmp = findDead(i)
63                 #找到了这一次所有该死的球
64                 #把他们从生死簿上重新做标记
65                 #地狱+1
66                 #人间-1
67                 for t in tmp:
68                     aliveBall.remove(t)
69             #不管有没有撞到该死的球,都应该飞回原点 (逃
70             x, y  = width/2, height-15
71             vx, vy = 0, 0
72             #顺便换个马甲再来
73             c = int(random(len(COLOR)))
74     curBall = aliveBall[:]
75     #更新一下,现在显示的球全是没死的球
76     x += vx
77     y += vy
78     #左右碰壁就反弹
79     if x>width-15 or x<15:
80         vx = -vx
81     # 上面碰壁也反弹
82     if y<15:
83         vy = -vy
84     #下面碰壁就还原
85     if y>height-15:
86         x, y = width/2, height-15
87         vx, vy = 0, 0
88         #换个马甲
89         c = int(random(len(COLOR)))
90  
91 def mousePressed():
92     global vx, vy
93     #按下鼠标就发射,给个速度就可
94     vx = (mouseX-width/2)/100.0
95     vy = (mouseY-height+15)/100.0

processing-python-泡泡龙

标签:height   活着   表示   use   urb   mouse   int   back   nbsp   

原文地址:https://www.cnblogs.com/szh1213/p/12051399.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!