【python】| 乌龟吃鱼游戏雏形

游戏规则:
1. 游戏背景为10*10;
2. 游戏会自动生成1个乌龟和10条鱼;
3. 它们移动方向随机;
4. 乌龟最大移动能力为2; [-2,-1,1,2]
5. 鱼最大移动能力为1; [-1,1]
6. 当移动到场景边界, 自动反方向移动;
7. 乌龟初始化体能为100<200为上限>;每移动一次消耗体能1;
8. 当乌龟和鱼的坐标重合, 代表乌龟吃掉鱼, 体能增加20;
9. 乌龟无体力或者鱼吃光, 游戏结束;


#!/usr/bin/env python
# coding:utf-8


""""
Name: TurtleFish.py
Date: 2018/03/29
Connect: xc_guofan@163.com
Author: lvah
Desc:





"""
import random

class Turtle:
    def __str__(self):
        return "Turtle:(%s, %s)" %(self.x, self.y)


    def __init__(self):
        # 乌龟的坐标
        self.x = random.randint(0, 10)
        self.y = random.randint(0, 10)
        # 乌龟体力
        self.power = 100


    def is_vaild(self, new):
        """
        判断坐标是否越界
        """
        if new < 0:  # -2
            return  0 - new
        elif new > 10:  # 12
            return  10 - (new - 10)
        else:
            return new

    def move(self):
        # 计算移动后的x坐标和y坐标
        new_x = self.x + random.choice([-2, -1, 1, 2])
        new_y = self.y + random.choice([-2, -1, 1, 2])

        self.x = self.is_vaild(new_x)
        self.y = self.is_vaild(new_y)
        self.power -= 1


    def eat(self):
        self.power += 20
        if self.power > 200:
            # 体能上限为200;
            self.power = 200




class Fish:
    def __str__(self):
        return "Fish:(%s,%s)" %(self.x, self.y)


    def __init__(self):
        # 鱼坐标
        self.x = random.randint(0, 10)
        self.y = random.randint(0, 10)



    def is_vaild(self, new):
        """
        判断坐标是否越界
        """
        if new < 0:  # -2
            return  0 - new
        elif new > 10:  # 12
            return  10 - (new - 10)
        else:
            return new

    def move(self):
        new_x = self.x + random.choice([-1, 1])
        new_y = self.y + random.choice([-1, 1])

        self.x = self.is_vaild(new_x)
        self.y = self.is_vaild(new_y)




t1 = Turtle()
print t1

f1=Fish()
print f1

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

while True:
    # 判断游戏是否结束:

    if t1.power  <= 0:
        print "乌龟死翘翘, GAME OVER!"
        break
    elif len(fish) == 0:
        print "鱼被吃光了, GAME OVER!"
        break
    else:
        t1.move()
        for afish in fish:
            afish.move()
            if afish.x == t1.x and afish.y == t1.y:
                t1.eat()
                fish.remove(afish)
                print "一条鱼被乌龟吃掉....."
                print "乌龟的最新体力: %s" %(t1.power)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值