|

楼主 |
发表于 2020-5-24 19:48:56
|
显示全部楼层
- import random
- def cjyd(temp): #判断是否超出边界,确定在<10,>0的范围内
- if temp > 10:
- temp = 20 - temp
- return temp
- elif temp < 0:
- temp = 0 - temp
- return temp
- else:
- return temp
- class Wugui: #乌龟出生点初始化和移动上下左右的判断和输出
- tili = 100
- def chusheng(self):
- self.wugui_x = random.randint(0, 10)
- self.wugui_y = random.randint(0, 10)
- print("乌龟出生在【%d】,【%d】" % (self.wugui_x, self.wugui_y))
- def yidong(self,x,y):
- self.tili -= 1
- self.zhou = random.choice(["x","y"])
- self.buchang = random.randint(1,2)
- if self.zhou == "x":
- self.heng = random.choice(["左","右"])
- if self.heng == "左":
- x = cjyd(x - self.buchang)
- else:
- x = cjyd(x + self.buchang)
- else:
- self.shu = random.choice(["上","下"])
- if self.shu == "下":
- y = cjyd(y - self.buchang)
- else:
- y = cjyd(y + self.buchang)
- return x, y
- class Yu: #鱼的出生点位和移动判断和输出
- def chusheng(self):
- self.yu_x = random.randint(0, 10)
- self.yu_y = random.randint(0, 10)
- def yidong(self,x,y):
- self.zhou = random.choice(["x", "y"])
- if self.zhou == "x":
- self.heng = random.choice(["左","右"])
- if self.heng == "左":
- x = cjyd(x - 1)
- else:
- x = cjyd(x + 1)
- else:
- self.shu = random.choice(["上","下"])
- if self.shu == "下":
- y = cjyd(y - 1)
- else:
- y = cjyd(y + 1)
- return x,y
- #生成鱼和乌龟并放入字典
- wugui = Wugui()
- wugui.chusheng()
- wuguiz = {}
- wuguiz.setdefault("乌龟",(wugui.wugui_x,wugui.wugui_y))
- yu = {}
- yuzu = Yu()
- for i in range(1,11):
- yu.setdefault("鱼%d"%i)
- for i in yu:
- yuzu.chusheng()
- yu[i] = (yuzu.yu_x,yuzu.yu_y)
- print("%s出生在【%d】,【%d】" % (i, yu[i][0], yu[i][1]))
- #判断移动,体力消耗,乌龟吃鱼
- jishu = 0
- while 1:
- jishu += 1
- if wugui.tili == 0 or len(yu) == 0 : #判断结束,鱼等于0或者乌龟体力为0
- break
- print("\n\n第【%d】次移动" % jishu)
- input("按回车进入下一次移动")
- wuguiz["乌龟"] = wugui.yidong(wuguiz["乌龟"][0],wuguiz["乌龟"][1]) #乌龟移动
- if wugui.zhou == "x":
- print("乌龟向%s移动了%d步,位置到达【%d】,【%d】,体力还剩【%d】点" % (wugui.heng, wugui.buchang,wuguiz["乌龟"][0],wuguiz["乌龟"][1], wugui.tili))
- else:
- print("乌龟向%s移动了%d步,位置到达【%d】,【%d】,体力还剩【%d】点" % (wugui.shu, wugui.buchang,wuguiz["乌龟"][0],wuguiz["乌龟"][1], wugui.tili))
- for i in yu: #鱼移动
- yu[i] = yuzu.yidong(yu[i][0],yu[i][1])
- if yuzu.zhou == "x":
- print("%s向%s移动了1步,位置到达【%d】,【%d】" % (i, yuzu.heng,yu[i][0],yu[i][1]))
- else:
- print("%s向%s移动了1步,位置到达【%d】,【%d】" % (i, yuzu.shu,yu[i][0],yu[i][1]))
- for i in list(yu.keys()): #判断吃
- if wuguiz["乌龟"] == yu[i]:
- wugui.tili += 20
- if wugui.tili > 100: #判断体力
- wugui.tili = 100
- print("%s被吃了,乌龟加20点体力,现有体力%d"%(i,wugui.tili))
- del yu[i]
- if wugui.tili == 0:
- print("乌龟没有体力,游戏结束")
- if len(yu) == 0:
- print("鱼被乌龟吃完了,游戏结束")
复制代码 |
|