挂一个无耻搬运工:码农教程。
真的打心底里瞧不起为了蹭热度全网照抄代码的某些人。
再次此声明:代码不是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