首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 游戏编程 大鱼吃小鱼

python 游戏编程 大鱼吃小鱼

作者头像
张树臣
发布2018-05-15 17:06:00
2.7K0
发布2018-05-15 17:06:00
举报
# 游戏编程:按照以下游戏编写一个乌龟类和鱼类,并尝试编写游戏。
# 假设游戏场景(x,y)为0<=x<=10,0<=y<=10
# 游戏生成1只乌龟和10只鱼
# 他们的移动方向均随机
# 乌龟的最大移动速度为2,它可以随机选择1还是2移动,鱼儿的最大移动能力是1
# 当移动到最大边界时,自动反方向移动
# 乌龟初始化体力为100(上限)
# 乌龟每移动一次,体力消耗1
# 当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20
# 鱼不考虑体力
# 当乌龟体力为0或者鱼儿的数量为0时游戏结束

import random as r

# from random import choice
# 定义边界
boundary_x = [0, 10]
boundary_y = [0, 10]


# 定义乌龟类
class Tortoise:
    def __init__(self):

        # count=1
        self.physical_power = 100
        self.x = r.randint(boundary_x[0], boundary_x[1])
        self.y = r.randint(boundary_y[0], boundary_y[1])

    def move(self):
        # 随机选择移动速度和移动方向
        new_x = self.x + r.choice([1, 2, -1, -2])
        new_y = self.y + r.choice([1, 2, -1, -2])
        # print("乌龟当前坐标是:",self.x,self.y)
        # print("乌龟当前速度是:",self.speed)
        # 当移动到X轴最大边界时,自动反方向移动
        if new_x > boundary_x[1]:
            self.x = boundary_x[1] - (new_x - boundary_x[1])
        elif new_x < boundary_x[0]:
            self.x = boundary_x[0] - (new_x - boundary_x[0])
        else:
            self.x = new_x

        # 当移动到Y轴最大边界时,自动反方向移动
        if new_y > boundary_y[1]:
            self.x = boundary_y[1] - (new_y - boundary_y[1])
        elif new_y < boundary_y[0]:
            self.y = boundary_y[0] - (new_y - boundary_y[0])
        else:
            self.y = new_y

        # 体力消耗加1
        self.physical_power -= 1

        return (self.x, self.y)

    def eat(self):
        self.physical_power += 20  # 体力增加20
        if self.physical_power > 100:
            self.physical_power = 100


class Fish:
    def __init__(self):

        # count=10
        self.x = r.randint(boundary_x[0], boundary_x[1])
        self.y = r.randint(boundary_y[0], boundary_y[1])
        # 设置移动速度
        # speed = 1

    def move(self):
        # 随机选择移动速度和移动方向
        new_x = self.x + r.choice([1, -1])
        new_y = self.y + r.choice([1, -1])
        # 当移动到X轴最大边界时,自动反方向移动
        if new_x > boundary_x[1]:
            self.x = boundary_x[1] - (new_x - boundary_x[1])
        elif new_x < boundary_x[0]:
            self.x = boundary_x[0] - (new_x - boundary_x[0])
        else:
            self.x = new_x

        # 当移动到Y轴最大边界时,自动反方向移动
        if new_y > boundary_y[1]:
            self.x = boundary_y[1] - (new_y - boundary_y[1])
        elif new_y < boundary_y[0]:
            self.y = boundary_y[0] - (new_y - boundary_y[0])
        else:
            self.y = new_y

        return (self.x, self.y)


fish = []
tor = Tortoise()
for i in range(10):
    new_fish = Fish()
    fish.append(new_fish)

while 1:
    if len(fish) == 0:
        print("鱼儿都被吃光了,游戏结束!")
        break
    if  tor.physical_power == 0:
        print("乌龟体力耗完了,游戏结束!")
        break

    pos = tor.move()
    print("乌龟坐标是:", pos)
    for each_fish in fish[:]:
        f = each_fish.move()
        print("鱼儿坐标是: ", f)
        if f == pos:
            tor.eat()
            fish.remove(each_fish)
            print("------------有一条鱼被吃掉了!----------------")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试经验与教训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档