Python 基础实战 -- 小游戏之乌龟吃鱼(其实只能看不能玩.....)
1 import random 2 import os 3 import time 4 5 class Fish(object): 6 7 coord = {} 8 moveSpeep = 0 9 10 def __init__(self,posX,posY,moveSpeep = 1): 11 self.moveSpeep = 1 12 self.coord = { "X":posX, "Y":posY} 13 14 def move(self, direction, scene = (10,10)): 15 speep = random.randint(1,self.moveSpeep) 16 17 while not direction == "": 18 if direction == "上": 19 20 if self.coord["Y"] - speep < 0: 21 direction = "下" 22 23 else: 24 self.coord["Y"] = self.coord["Y"] - speep 25 direction = "" 26 27 if direction == "下": 28 29 if self.coord["Y"] + speep >= scene[1]: 30 direction = "上" 31 else: 32 self.coord["Y"] = self.coord["Y"] + speep 33 direction = "" 34 35 if direction == "左": 36 37 if self.coord["X"] - speep < 0: 38 direction = "右" 39 else: 40 self.coord["X"] = self.coord["X"] - speep 41 direction = "" 42 43 if direction == "右": 44 45 if self.coord["X"] + speep >= scene[0]: 46 direction = "左" 47 else: 48 self.coord["X"] = self.coord["X"] + speep 49 direction = "" 50 51 52 def getPos(self): 53 return self.coord["X"],self.coord["Y"] 54 55 #定义乌龟类 56 class Tortoise(Fish): 57 58 def __init__(self, posX, posY): 59 self.__power = 100 60 Fish.__init__(self, posX, posY,moveSpeep = 2) 61 62 def move(self,direction,scene): 63 self.__power -= 1 64 Fish.move(self,direction,scene) 65 66 def eat(self): 67 self.__power += 20 68 69 def death(self): 70 isDie = False if self.__power >= 0 else True 71 return isDie 72 73 #生成游戏角色(乌龟和鱼) 74 def createRole(tortoiseCount = 1,fishCount = 10, scene = (10,10)): 75 coordList = [] 76 tortoises = [] 77 fishs = [] 78 while not len(coordList) >= tortoiseCount + fishCount: 79 pos = random.randint(0,scene[0]- 1),random.randint(0,scene[1] - 1) 80 if pos not in coordList: 81 coordList.append(pos) 82 else: 83 while tortoiseCount: 84 #生成一只乌龟 85 posX,posY = coordList.pop() 86 tortoises.append(Tortoise(posX,posY)) 87 tortoiseCount -= 1 88 while len(coordList): 89 #生成十只鱼 90 posX,posY = coordList.pop() 91 fishs.append(Fish(posX,posY)) 92 return tortoises,fishs 93 94 95 #主游戏程序 96 def main(scene = (10,10)): 97 98 tortoises,fishs = createRole(scene = (10,10)) 99 try: 100 #初始化地图定义一个二维数组用来表示地图 101 scene_map = [] 102 for i in range(scene[1]): 103 scene_map.append(["□" for x in range(scene[0])]) 104 105 for tortoise in tortoises: 106 posX,posY = tortoise.getPos() 107 scene_map[posY][posX] = "◆" 108 for fish in fishs: 109 posX,posY = fish.getPos() 110 scene_map[posY][posX] = "◇" 111 tips = "" 112 while True: 113 time.sleep(0.05) 114 #清屏 115 os.system("cls") 116 117 for i in range(len(scene_map)): 118 for j in range(len(scene_map[i])): 119 print(scene_map[j][i],end=("")) 120 print() 121 122 print(tips) 123 124 for tortoise in tortoises: 125 #乌龟移动 126 direction = random.sample("上下左右",1) 127 tortoise.move(direction[0],scene) 128 129 #如果坐标与鱼的坐标重叠,乌龟吃掉鱼 130 for fish in fishs: 131 if fish.getPos() == tortoise.getPos(): 132 tortoise.eat() 133 fishs.remove(fish) 134 tips += "有一只鱼被吃掉了!\n" 135 136 if tortoise.death(): 137 tortoises.remove(tortoise) 138 tips += "乌龟体力耗尽死掉了!\n" 139 140 for fish in fishs: 141 #鱼移动 142 direction = random.sample("上下左右",1) 143 fish.move(direction[0],scene) 144 145 #如果坐标与鱼的坐标重叠,乌龟吃掉鱼 146 for tortoise in tortoises: 147 if fish.getPos() == tortoise.getPos(): 148 tortoise.eat() 149 fishs.remove(fish) 150 tips += "有一只鱼被吃掉了!\n" 151 152 for i in range(len(scene_map)): 153 for j in range(len(scene_map[i])): 154 scene_map[j][i] = "□" 155 156 for tortoise in tortoises: 157 posX,posY = tortoise.getPos() 158 scene_map[posY][posX] = "◆" 159 for fish in fishs: 160 posX,posY = fish.getPos() 161 scene_map[posY][posX] = "◇" 162 163 if len(fishs) == 0 or len(tortoises) == 0: 164 break 165 166 except: 167 print("游戏程序产生异常!") 168 finally: 169 print("游戏结束!") 170 171 172 main()