问题描述
目标是使用可以上下左右移动的球X将其他球(用字母表示)从地图上敲下来。 1 代表一堵墙,0 代表您可以移动到的开放空间。当它撞到墙上时,它应该以其剩余的动量向另一个方向移动。当球 x 与另一个球碰撞时,它应该将其动量传递给下一个球。到目前为止,我的程序在第一次碰撞时起作用,但当我再次尝试击球时却不起作用。我主要关注向右移动的碰撞,当它起作用时,我可以添加它向左、向上和向下移动。谁能告诉我哪里出了问题以及如何解决。
地图看起来像这样:
1 1 1 0 C D 0 1
0 A 0 0 0 1 0 1
0 B 1 0 0 0 0 1
0 X 1 0 0 0 0 0
1 1 1 1 1 1 1 1
class ball :
def __init__(self,name,x,y,map) :
self.name = name
self.x = x
self.y = y
self.map = map
def getXCordinates(self) :
return self.x
def getYCordinates(self) :
return self.y
def getMap(self) :
return self.map
def getName(self) :
return self.name
def getPoints(self) :
return self.points
def moveRight(self,steps) :
if steps == 0 :
self.map[self.y][self.x] = self.name
print(self.map)
self.map[self.y][self.x] = '0'
maxrange = self.x + steps + 1
k = 1
for i in range(self.x + 1,maxrange) :
try :
if self.map[self.y][i] == '0' :
if i == maxrange - 1 :
self.x = self.x + steps
try :
self.map[self.y][self.x] = self.name
print(self.map)
except :
print("GAME OVER! Your ball fell out of the map")
elif self.map[self.y][i] == '1' :
self.x = i - 1
self.moveLeft(steps - k)
break
else :
print("ball",self.name,"collided with ball",self.map[self.y][i])
self.map[self.y][self.x + (k - 1)] = self.name
self.x = self.x + k
ballExtra = ball(self.map[self.y][i],self.x,self.y,self.map)
ballExtra.moveRight(steps - k)
break
k += 1
except :
print("GAME OVER! Your ball fell out of the map")
break
def moveLeft(self,steps) :
self.map[self.y][self.x] = '0'
minRange = self.x - steps - 1
k = 0
for i in range(self.x,minRange,-1) :
try :
if self.map[self.y][i] == '0' :
if i == minRange + 1 :
self.x = self.x - steps
try :
self.map[self.y][self.x] = self.name
print(self.map)
except :
print("GAME OVER! Your ball fell out of the map")
elif self.map[self.y][i] == '1' :
self.x = i + 1
self.moveRight(steps - k)
break
else :
print("ball",self.map[self.y][i])
self.x = self.x - (k + 1)
self.map[self.y][self.x] = self.name
ballExtra = ball(self.map[self.y][i],(self.x - k),self.map)
ballExtra.moveLeft(steps - k)
break
k += 1
except :
print("GAME OVER! Your ball fell out of the map")
break
def moveUp(self,steps) :
self.map[self.y][self.x] = '0'
minRange = self.y - steps - 1
k = 0
for i in range(self.y,-1) :
try :
if self.map[i][self.x] == '0' :
if i == minRange + 1 :
self.y = self.y - steps
try :
self.map[self.y][self.x] = self.name
print(self.map)
except :
print("GAME OVER! Your ball fell out of the map")
elif self.map[i][self.x] == '1' :
self.y = i + 1
self.moveDown(steps - k)
break
else :
ballExtra = ball(self.map[i][self.x],self.map)
ballExtra.moveUp(steps - k)
k += 1
except :
print("GAME OVER! Your ball fell out of the map")
break
def moveDown(self,steps) :
if steps == 0 :
self.map[self.y][self.x] = self.name
print(self.map)
self.map[self.y][self.x] = '0'
maxrange = self.y + steps + 1
k = 1
for i in range(self.y + 1,maxrange) :
try :
if self.map[i][self.x] == '0' :
if i == maxrange - 1 :
self.y = self.y + steps
try :
self.map[self.y][self.x] = self.name
print(self.map)
except :
print("GAME OVER! Your ball fell out of the map")
elif self.map[i][self.x] == '1' :
self.y = i - 1
self.moveUp(steps - k)
break
else :
ballExtra = ball(self.map[i][self.x],self.map)
ballExtra.moveDown(steps - k)
k += 1
except :
print("GAME OVER! Your ball fell out of the map")
break
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)