python大鱼吃小鱼_写简单游戏,学编程语言-python篇:大鱼吃小鱼

下面的图片是网上随便找的素材,这里用于切换主角的图片有三张,其他则是其他小鱼和boss鱼。我们控制的主人鱼的大小范围来决定加载不同的图片。以上准备的素材,其中一些背景色没有时间做处理,所以游戏中会有难看的背景色,只能凑合着用。。。

一、玩法及逻辑相关:

控制你的鱼,有个初始大小,当碰到比你小的鱼的时候,你会吃掉它,并且会变大;遇到比你大的鱼,受到一点伤害,当总生命值为0时,失败游戏结束;当你控制的鱼大小增大最大时,游戏获胜。当鱼受到伤害时,有一段时间是无敌时间,且会闪烁。下面是主要的逻辑处理代码

View Code

主人公的控制类似一般的处理,这边用flashIsonl来生成时间差(偶数值时间为真)playersurfaceset()函数决定主人公的图片类型。

二、敌方鱼的生成处理

上篇做的敌方的处理会在当前视口随即出现,这个突兀感太强,鱼的出现也不能随机显示在当前视口,应该由摄像机视角之外生成才符合常理。并且当鱼离摄像区域太远的距离,需要删除掉鱼对象。

1 for i in range(len(fishobjs)-1,-1,-1):

2             if isOutsideArea(camerax,cameray,fishobjs[i]):

3                 del fishobjs[i]

4         while len(fishobjs)<10:

5             fishobjs.append(makeNewfish(camerax,cameray))

1 def makeNewfish(camerax,cameray):

2     sq={}

3     generalSize=random.randint(5,25)

4     multiplier = random.randint(1,3)

5     sq['width'] = (generalSize +random.randint(0,10))*multiplier

6     sq['height']= (generalSize +random.randint(0,10))*multiplier

7     sq['x'],sq['y']=getRandomoffCameraPos(camerax,cameray,sq['width'],sq['height'])

8     sq['movx'] = getRandomVelcocity()

9     sq['movy'] = getRandomVelcocity()

10     if sq['movx']<0:

11         sq['surface']=surfaceset(sq['width'],sq['height'],True)

12     else:

13         sq['surface']=surfaceset(sq['width'],sq['height'],False)

14     return sq

三、跟随视角的处理

这个主要是跟随主人公视角的问题,计算出主人公的中心点距离摄像机中心点的距离,当距离偏大的时候,需要移动摄像机的位置,具体处理代码如下:

1         playerCenterx=playerobj['x']+int(playerobj['size']/2)

2         playerCentery=playerobj['y']+int(playerobj['size']/2)

3         if (camerax+HALF_WINWIDTH)-playerCenterx>CAMERASLACK:

4             camerax=playerCenterx+CAMERASLACK-HALF_WINWIDTH

5         elif playerCenterx-(camerax+HALF_WINWIDTH)>CAMERASLACK:

6             camerax=playerCenterx-CAMERASLACK-HALF_WINWIDTH

7         if (cameray+HALF_WINHEIGHT)-playerCentery>CAMERASLACK:

8             cameray=playerCentery+CAMERASLACK-HALF_WINHEIGHT

9         elif playerCentery-(camerax+HALF_WINHEIGHT)>CAMERASLACK:

10             cameray=playerCentery-CAMERASLACK-HALF_WINHEIGHT

复制代码

大部分应该介绍的应该就这些了,只能说游戏这块水比较深,只能浅尝辄止一番,python做游戏只能简单玩玩,这块不是他的优势。有人感兴趣的话可以研究它,推荐一本不错的书《Making games with python $ pygame》,哎 只能说有巨人的肩膀上站真好。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值