练习:类 乌龟吃鱼小游戏

1:场景范围(x,y)  0<=x<=10,  0<=y<=10

2:游戏生成1只乌龟和10只小鱼

3:移动方向随机

4:乌龟的最大移动能力是2,(可以随机选择移动距离是1还是2),鱼儿的最大移动能力是1

5:移动到边缘时,自动反方向移动

6:乌龟初始化体力为1,每移动一次消耗1,鱼儿没有体力

7:当乌龟和鱼儿坐标重合时,鱼儿被乌龟吃掉,体力增长20

8:乌龟体力为0时,乌龟挂掉。或者鱼儿数量为0时,游戏结束

 1 import random as r
 2
 3 legal_x=[0,10]
 4 legal_y=[0,10]
 5
 6 class Turtle:
 7     def __init__(self): #构造器,实例对象创建时调用
 8         #初始体力
 9         self.power=100
10         #初始化位置
11         self.x=r.randint(legal_x[0],legal_x[1])
12         self.y=r.randint(legal_y[0],legal_y[1])
13
14     def move(self):
15         #随机计算方向并移动到新的位置
16         new_x=self.x + r.choice([1 , 2 , -1 , -2])  #随机选择移动距离
17         new_y=self.y + r.choice([1 , 2 , -1 , -2])
18
19         #检查x是否超出场景
20         if new_x < legal_x[0]:
21             self.x = legal_x[0]-(new_x-legal_x[0])
22         elif new_x > legal_x[1]:
23             self.x = legal_x[1] - (new_x-legal_x[1])
24         else:
25             self.x = new_x
26
27         #检查y是否超出场景
28         if new_y < legal_y[0]:
29             self.y = legal_y[0] - ( new_y-legal_y[0])
30         elif new_y > legal_y[1]:
31             self.y = legal_y[1] - (new_y - legal_y[1])
32         else:
33             self.y = new_y
34
35         self.power -= 1
36         return (self.x,self.y)
37
38     def eat(self):
39         self.power+=20
40         if self.power>100:
41             self.power=100
42         print(turtle.power)
43
44 class Fish:
45     def __init__(self):
46         self.x=r.randint(legal_x[0],legal_x[1])
47         self.y=r.randint(legal_y[0],legal_y[1])
48
49     def move(self):
50         new_x=self.x + r.choice([1,-1])
51         new_y=self.y + r.choice([1,-1])
52         #检查x是否超出场景
53         if new_x < legal_x[0]:
54             self.x = legal_x[0]-(new_x-legal_x[0])
55         elif new_x > legal_x[1]:
56             self.x = legal_x[1] - (new_x-legal_x[1])
57         else:
58             self.x = new_x
59
60         #检查y是否超出场景
61         if new_y < legal_y[0]:
62             self.y = legal_y[0] - ( new_y-legal_y[0])
63         elif new_y > legal_y[1]:
64             self.y = legal_y[1] - (new_y - legal_y[1])
65         else:
66             self.y = new_y
67
68         return (self.x , self.y)
69
70 turtle = Turtle()
71 fish = []
72
73 for i in range(10):
74     new_fish=Fish()
75     fish.append(new_fish)
76 while True:
77     if not len(fish):
78         print("鱼儿都吃光啦,游戏结束!")
79         break
80     if not turtle.power:
81         print("乌龟的体力耗尽,挂掉了")
82         break
83     pos = turtle.move()
84     for each_fish in fish[:]:
85         if each_fish.move() == pos:
86             #鱼儿被吃掉
87             turtle.eat()
88             fish.remove(each_fish)
89             print("有条鱼儿被吃掉了,还剩%d条" % len(fish))
时间: 2024-11-09 02:09:26

练习:类 乌龟吃鱼小游戏的相关文章

【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例

本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接: 第一篇:初识pygame  http://www.cnblogs.com/msxh/p/4966899.html 第二篇:pygame中的IO.数据  http://www.cnblogs.com/msxh/p/4973003.html 第三篇:pygame事件与设备轮询  http://www

乌龟吃鱼简单游戏-类的应用

class Base(object): def __init__(self,x,y,a): self.x=x self.y=y self.flag=1 self.a=a def move(self,a): if self.flag==1: self.x+=a self.y+=a-1 else: self.x-=a self.y -= a-1 if self.x>=10 or self.y>=10: self.flag=-1 elif self.x<=0 or self.x<=0:

python学习之乌龟吃鱼and思聪吃热狗游戏

乌龟吃鱼游戏游戏规则:1). 假设游戏场景为范围(x,y)为0<=x<=10,0<=y<=102). 游戏生成1只乌龟和10条鱼, 它们的移动方向均随机3). 乌龟的最大移动能力为2(它可以随机选择1还是2移动),鱼儿的最大移动能力是1当移动到场景边缘,自动向反方向移动4). 乌龟初始化体力为100(上限), 乌龟每移动一次,体力消耗1当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20, 鱼暂不计算体力5). 当乌龟体力值为0(挂掉)或者鱼儿的数量为0游戏结束 01_turtle_f

js、jQuery实现2048小游戏

一.游戏简介:  2048是一款休闲益智类的数字叠加小游戏 二. 游戏玩法: 在4*4的16宫格中,您可以选择上.下.左.右四个方向进行操作,数字会按方向移动,相邻的两个数字相同就会合并,组成更大的数字,每次移动或合并后会增加一个数字. 当16宫格中没有空格子,且四个方向都无法操作时,游戏结束. 三. 游戏目的: 目的是合并出2048这个数字,获得更高的分数. 四. 游戏截图:  五.先来玩一下: 开始游戏 查看源码 六.游戏实现原理: 使用js.jQuery实现了PC版及手机版,实现原理是一样

需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次,超过5次提示:游戏试玩结束,请付费。

package cn.idcast4; import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties; /* * 需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次, *

WEBGL学习笔记(七):实践练手1-飞行类小游戏之游戏控制

接上一节,游戏控制首先要解决的就是碰撞检测了 这里用到了学习笔记(三)射线检测的内容了 以鸟为射线原点,向前.上.下分别发射3个射线,射线的长度较短大概为10~30. 根据上一节场景的建设,我把y轴设为前进方向,z轴设为高度~ 如果射线返回有结果,那么说明鸟遇到了障碍物.代码如下: var raycaster1 = new THREE.Raycaster(birdmesh.position, new THREE.Vector3(0, 1, 0), 0, 30) var raycaster2 =

用控制台写类窗体2048小游戏

原文地址:用控制台写类窗体2048小游戏作者:余文 2048是一个很简单的小游戏,这是我自己实现的一个版本. 这个版本有两个特色 这是一个高仿窗体程序的控制台程序. 通过使用指针将四个方向的移动简化成了一个方向的移动. 当初刚出来2048小游戏的时候,玩的不亦乐乎.之后根据游戏规则自己花了一下午时间用控制台写了一个玩,没有参考源码. 当时只实现了游戏的移动逻辑和胜负判定逻辑,界面很简单,但已经可以玩玩了. 这是当初刚写完发空间说说得瑟的时候. 今年5月有段时候比较闲,对程序做了较大更新. 实时显

C语言射击类打飞机小游戏

使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会. 在网上查询资料并且和同学讨论之后,对原来的代码有了一些改进, 改进:增加了颜色函数,在你所需要改变窗口颜色的位置调用函数 system("color xx") xx分别指的是背景颜色和文字(前景)颜色.x为一位16进制数,即1-f都可以使用.可以随意组合.增加了终止函数,使游戏在死亡三次后自动结束游戏,并且可以选择是否重新开始游戏:另外增添了设置函数,使得可以对游戏进行

【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例

本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构. 这次我们来一起做一个简单的酷跑类游戏综合运用以前学到的知识. 程序下载地址:http://yunpan.cn/cLIcJgTvq4tZS 访问密码 901f 源代码网盘地址:http://yunpan.cn/cLIc67S4nNRFY 访问密码 c139 github地址:https://github.com/XINCGer/