我现在正在制作一个新的加农炮游戏。我怎样才能做到屏幕左下角只有一门大炮?你知道吗
from graphics import *
from math import sqrt
from math import trunc
def PinR(p,r):
if p.getX()>=r.getP1().getX() and p.getX()<=r.getP2().getX()and p.getY()>=r.getP1().getY() and p.getY()<=r.getP2().getY():
return True;
else:
return False;
def distance(p1,p2):
dx=p1.getX()-p2.getX();
dy=p1.getY()-p2.getY();
dist=sqrt(dx*dx+dy*dy);
return dist;
#parameter
FieldWidth=700;
FieldHeight=700;
GroundDepth=75;
BallSize=10;
OriginalSpeed=4;
FieldBackground="brown";
FieldBorder="brown";
tickLength=800000;
buttonSize=8;
# number of cannons and balls
numBalls=4;
# initial cannon power
explosionStrength=30;
# intial gravitational constant
g=1;
# clock tick delay
delay=0.05;
#Create field
Field=GraphWin("B",FieldWidth,FieldHeight);
Field.setBackground(FieldBackground);
#set of balls
spacing=FieldWidth/(numBalls);
ball=[];
for b in range (0,numBalls):
newball=Circle(Point(spacing*b+spacing//2,FieldHeight-GroundDepth),BallSize);
newball.setFill("black");
newball.draw(Field);
ball.append(newball);
#cannon
cannon=[]
for c in range (0,numBalls):
newCannon=Rectangle(Point(spacing*c+spacing//2-BallSize,FieldHeight-GroundDepth-BallSize*5),
Point(spacing*c+spacing//2+BallSize,FieldHeight-GroundDepth+BallSize));
newCannon.setFill("black");
newCannon.draw(Field);
cannon.append(newCannon);
#set of button groups (fire, powerup, powerdown)
fire=[];
for f in range (0,numBalls):
newbutton=Rectangle(Point(spacing*f+spacing//2-buttonSize//2,FieldHeight-GroundDepth-BallSize),
Point(spacing*f+spacing//2+buttonSize//2,FieldHeight-GroundDepth-BallSize+buttonSize));
newbutton.setFill("red");
newbutton.draw(Field);
fire.append(newbutton);
#wall
#target(red,white,red,white)
balldistance=20;
ball1=Circle(Point(FieldWidth//2-20,FieldHeight//2+20),BallSize);
ball1.setFill("red");
ball1.draw(Field);
你得到4门大炮的原因是:
…其中
numBalls
是4,每次通过循环都创建一个新的加农炮。你知道吗假设只有一门大炮,你也只需要一个炮弹和一枪,所以只需要设置
numBalls = 1
而不是numBalls = 4
。你知道吗然而,简化程序可能更有意义。将4门大炮的列表替换为一门大炮,去掉循环,对4个球执行相同的操作,等等。然后还可以简化布局规则,如果只有1门大炮,则无需使用
spacing
变量来配置它们之间的距离。等等。这可能使您更容易理解程序的工作原理,并且弄清楚如何简化它本身也可能是有益的。你知道吗如果你想改变它的位置,在这一行:
因此,您可以调整各种常量(它们似乎都有相当合理的名称)以获得您想要的结果,或者,当然,只需硬编码您想要的位置,而不是计算它。你知道吗
相关问题 更多 >
编程相关推荐