面向对象(游戏2)

<?php/** * Created by PhpStorm. * User: fu * Date: 2017/7/21 * Time: 16:17 */

/** * 抽象的角色类,作为所有的角色的模板 * Class JueSe */abstract class JueSe{    /** 角色的名字 */    protected $mingZi;    /** 角色的等级 */    protected $dengJi;    /** 角色的包裹 */    protected $baoGuo;    /** 角色的攻击力 */    protected $gongJiLi;    /** 角色的防御力 */    protected $fangYuLi;    /** 角色的生命值 */    protected $shengMingZhi;

/** 盗贼 */    function __construct($mingZi,$dengJi=0,$baoGuo=10,                         $gongJiLi=1,$fangYuLi=1,$shengMingZhi=50)    {        $this->mingZi = $mingZi;        $this->dengJi = $dengJi;        $this->baoGuo = $baoGuo;        $this->gongJiLi = $gongJiLi;        $this->fangYuLi = $fangYuLi;        $this->shengMingZhi = $shengMingZhi;    }    /**     * 自己介绍自己的行为     */    public function jieShaoZiJi(){        echo ‘我的角色是:‘.$this->mingZi.‘<br>‘.‘等级:‘.$this->dengJi.‘<br>‘.‘攻击力:‘.$this->gongJiLi.            ‘<br>‘.‘血量:‘.$this->shengMingZhi.‘<br>‘.‘防御力:‘.$this->fangYuLi.‘<br>‘.‘包裹空间:‘.$this->baoGuo.‘<br>‘;    }}

/** * 盗贼可以偷盗 * Interface ITouDao */interface ITouDao{    function touDao($jueSe);}

/** * 猎人可以打猎 * Interface IDaLie */interface IDaLie{    function daLie($jueSe);}

/** * 农民可以采矿。 * Interface ICaiKuang */interface ICaiKuang{    function caiKuang($jueSe);}

/** * 盗贼、猎人和农民可以攻击。 * Interface IGongJi */interface IGongJi{    function gongJi($jueSe);}

/** * 农民、医生可以治疗。 * Interface IFangYu */interface IFangYu{    function fangYu($jueSe);}

/** * 士兵可以抵抗盗贼、猎人和农民等的攻击。 * Interface IZhiLiao */interface IZhiLiao{    function zhiLiao($jueSe);}

/** * 盗贼类 * Class DaoZei */class DaoZei extends JueSe implements ITouDao, IGongJi {    /**     * 盗贼的偷盗的行为     * @param $jueSe    被偷的角色     */    function touDao($jueSe){        echo ‘盗贼可以偷盗<br>‘;    }    /**     * 盗贼可以攻击     * @param $jueSe    被攻击的角色     */    function gongJi($jueSe){        echo ‘盗贼可以攻击<br>‘;    }

public function jieShaoZiJi(){        parent::jieShaoZiJi();        $this->touDao(‘‘);        $this->gongJi(‘‘);    }}

/** * 玩家类 * Class WanJia */class WanJia{    /** 玩家的名字 */    private $mingZi;

function __construct($mingZi)    {        $this->mingZi = $mingZi;    }

/**     * 玩家可以控制角色     * @param $jueSe    被玩家所控制的角色对象     */    public function kongZhi($jueSe){        echo ‘我是玩家:‘.$this->mingZi.‘<br>‘;        $jueSe->jieShaoZiJi();    }}

$wj = new WanJia(‘王鹏菲‘);$jueSe = new DaoZei(‘盗贼‘);$wj->kongZhi($jueSe);
时间: 2024-11-06 07:27:59

面向对象(游戏2)的相关文章

C++面向对象游戏模型

简单模拟一下"英雄联盟"的模型,先把所有英雄抽象成Hero,他们有很多共同的属性和攻击特性,所以先定义一个抽象类. 由于注释已经写得很清楚了,所以也无需赘述. #ifndef __HERO__ #define __HERO__ #define TRUE 1 #define FALSE 0 typedef enum ability { ABILITY_Q = 0x0000000a, ABILITY_W = 0x0000000b, ABILITY_E = 0x0000000c, ABILI

转: Orz是一个基于Ogre思想的游戏开发架构

Orz是一个基于Ogre思想的游戏开发架构,好的结构可以带来更多的功能.Orz和其他的商业以及非商业游戏开发架构不同.Orz更专著于开发者的感受,简化开发者工作.Orz可以用于集成其他Ogre3D之外的图形引擎.Orz 0.4.0版本以及以后采用MIT开源授权.关于Orz的评价,请看这里. Orz是一个易扩展.易使用的面向对象游戏开发框架.Orz全称是Open Resources Zone,中文就是开放资源地带.Orz的目标是让每一个看电视的人,都能开发游戏. 作为对大家新春的贺礼,Ogre3D

cocos2dx游戏开发学习笔记3-lua面向对象分析

在lua中,可以通过元表来实现类.对象.继承等.与元表相关的方法有setmetatable().__index.getmetatable().__newindex. 具体什么是元表在这里就不细说了,网上很多介绍,这里主要讲与cocos2dx相关联的部分. 在lua-binding库中extern.lua里,有如下方法: --Create an class. function class(classname, super) local superType = type(super) local c

html5面向对象做一个贪吃蛇小游戏

canvas加面向对象方式的贪吃蛇 2016-08-25 这个小游戏可以增加对面向对象的理解,可以加强js逻辑能力,总之认真自己敲一两遍收获还是不少啊!!适合刚学canvas的同学练习!! 废话不多说,直接来讲思路和代码. ----------------------------------------------------------------------------------------------------------------- 开发思路:首先要有蛇吃的食物,就是一个个canv

HTML5面向对象的游戏开发简单实例总结

在阅读一本HTML5游戏开发相关书籍时发现一个很好的例子,通过这个例子可以对面向对象的开发进行更深入的理解.这个对象要实现的是:将一个CSS sprite中的图像绘制到canvas中.首先创建一个SpriteSheet对象,代码如下: var SpriteSheet = new function(){ this.map = { }; this.load = function(spriteData,callback){ this.image = new Image(); this.image.on

[从玩游戏来理解编程]关于面向对象编程的浅解(1)

我最近在玩星际争霸2,感觉到面向对象真是太重要了.有三个种族,每个种族有自己的兵种,一个兵种就是一个类,而且他们的父类都是一个类. 每个单位都有自己的属性和技能,之前学习的c语言是面向过程的,慢慢的也理解到了面向对象在某些地方的重要性. 之前都是在学习算法,实现上用的c语言,看不出来到底有什么区别,反而在用c来的更简洁和更快,最近慢慢的接触到小项目之类的什么的就慢慢感觉到面向对象的重要性. 最近在看一本书叫<making games with python and pygame>,这本书很好,

2015/11/5用Python写游戏,pygame入门(5):面向对象的游戏设计

昨天的内容里有了运动的子弹,虽然我们只添加了一个子弹,但你可以看到我们需要记录子弹的x,y坐标,每次要更新它的坐标.如果我们想要有多颗子弹,就需要存储多个坐标.那时候处理起来就不显得那么简单,也许我们可以使用两个list,一个专门存储各个子弹的x坐标,另一个专门存储子弹的y坐标,问题似乎变得没那么复杂,写起来会简单一些.但是我们到现在还没有加入过敌机,如果加入了敌机,加入别的东西的设计,我们将需要很多不同的数据的存储.虽然一个思路清晰的程序员可以记住所有的坐标存储在哪个list里,但是这毕竟比较

【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是一项庞大复杂的工程,如果没有面向对象功能势必会为开发带来一定的不便.不过幸好Lua中有table这样强大的数据结构,利用它再结合元表(metatable),我们便可以很方便地在Lua中模拟出类.继承和多态等面向对象编程具有的特性. 二.前提知识 按照惯例,我们还是先来熟悉一下必要的前提知识,以便方便

面向对象案例——贪吃蛇游戏

最近项目上线,近一个星期没更博了,今天来写一个经典的游戏案例--贪吃蛇.在这个简单的案例里可以体会javaScript 面向对象开发相关模式,学习使用面向对象的方式分析问题. 1.功能实现 1.1 搭建页面:放一个容器盛放游戏场景 div#map,设置样式 <div class="map" id="map"></div> 1 <style> 2 #map{ 3 background-color: #000; 4 width: 15

python基础----以面向对象的思想编写游戏技能系统

1. 许多程序员对面向对象的思想都很了解,并且也能说得头头是道,但是在工作运用中却用的并不顺手. 当然,我也是其中之一. 不过最近我听了我们老师的讲课,对于面向对象的思想有了更深的理解,今天决定用一个实例跟大家分享一下. 欢迎各位前辈评论指正. 2.面向对象的三大特征:封装.继承.多态          六大原则: 开闭原则,单一职责,依赖倒置,组合复用,里氏替换,迪米特法则 3. 可是这三大特征和六大原则具体如何运用,又从哪里才能体现出我应用到了呢? 下面我就以一个游戏技能项目的代码实例,来讨