快来一同自慰,写出外挂版微信自慰

by admin on 2019年4月28日

**手淫文字版 

一、简介

  还记得好多年前的青春,你自己壹块“自慰”。

  那就共同写个手淫游戏吧:

bf88必发唯一官网 1 bf88必发唯一官网 2 bf88必发唯一官网 3

 

一、简介

  还记得诸多年前的青春,你本身一齐“自慰”。

  那就1只写个自慰游戏吧:

bf88必发唯一官网 4 bf88必发唯一官网 5 bf88必发唯一官网 6

 

快来一同手淫、大拿带你用最二代码、写出外挂版微信手淫,来一齐手淫

**

二、HTML内容

  HTML 基础知识戳那

  HTML内容把供给的图形财富以相应标签格式写出就能够,分为以下几有的:

    •   背景图片
    •   本身战机的图形
    •   子弹的图片
    •   敌机的图形
    •   敌机挂了的图样
    •       总计分数的职分预留

bf88必发唯一官网 7bf88必发唯一官网 8

<base href="http://images.cnblogs.com/cnblogs_com/suoning/860380/" />

<div class="bg">
    <div class="me-plan"></div>
    <div id="play_num"></div>
    <div class="bullet">
        <img src="o_cartridge.png">
    </div>
    <div class="x">
        <img class="lift" src="o_plain1.png">
        <img class="die" src="o_die1.png">
    </div>
    <div class="x2">
        <img class="lift" src="o_plain2.png">
        <img class="die" src="o_die2.png">
    </div>
</div>

HTML代码

 

二、HTML内容

  HTML 基础知识戳那

  HTML内容把须要的图形财富以相应标签格式写出就能够,分为以下几局地:

    •   背景图片
    •   本身战机的图形
    •   子弹的图片
    •   敌机的图形
    •   敌机挂了的图片
    •       总结分数的职位留给

bf88必发唯一官网 9bf88必发唯一官网 10

<base href="http://images.cnblogs.com/cnblogs_com/suoning/860380/" />

<div class="bg">
    <div class="me-plan"></div>
    <div id="play_num"></div>
    <div class="bullet">
        <img src="o_cartridge.png">
    </div>
    <div class="x">
        <img class="lift" src="o_plain1.png">
        <img class="die" src="o_die1.png">
    </div>
    <div class="x2">
        <img class="lift" src="o_plain2.png">
        <img class="die" src="o_die2.png">
    </div>
</div>

bf88必发唯一官网,HTML代码

 

一、简介

  还记得大多年前的春日,你自己一起“手淫”。

  那就联手写个自慰游戏吧:

bf88必发唯一官网 11 bf88必发唯一官网 12 bf88必发唯一官网 13

 

思路: 
快来一同自慰,写出外挂版微信自慰。一:主飞机从最底层y = 一生成,左右移动
,每一遍左右x轴随机移动n个位置,并且移交送达过的地方每一个职位都会生成贰个子弹,并发出。假诺此岗位Y轴正好有小飞机,则击落一架且贰回只可以击落,加一分。(击落多架除非下三回随飞机位置置还在原地)

三、CSS布局

  CSS基础知识戳那

  CSS代码块只需把HTML代码块的图片进度轻便布局,分以下几有的:

    •   背景图片的宽与高、居中、边框、超过边界隐藏、relative相对定位
    •   本身战机的宽与高、absolute绝对父级定位与z-index优先级最高
    •   本身战机暗中同意隐藏,游戏开首则滑出
    •   子弹、敌机的absolute相对父级定位
    •   子弹、敌机的默许隐藏,游戏起始则透过仿制展现
    •   敌机离世的图纸定位与隐藏
    •   分数的字体大小设置及定点

bf88必发唯一官网 14bf88必发唯一官网 15

<base href="http://images.cnblogs.com/cnblogs_com/suoning/860380/" />

<style>
        .bg {
            background-image: url("o_bg.jpg");
            height: 500px;
            width: 300px;
            position: relative;
            margin-left: 40%;
            margin-top: 5%;
            overflow: hidden;
            border: 1px;
        }

        .me-plan {
            width: 99px;
            height: 112px;
            background-image: url("o_me.png");
            position: absolute;
            top: 80%;
            left: 35%;
            display: none;
            z-index: 666;
        }

        .bullet {
            position: absolute;
            display: none;
            left: -10px;
        }

        .x, .x2 {
            position: absolute;
            display: none;
        }

        .lift {
            position: absolute;
            top: -110px;
        }

        .die {
            display: none;
        }

        #play_num {
            font-size: 30px;
        }
    </style>

CSS代码

 

三、CSS布局

  CSS基础知识戳这

  CSS代码块只需把HTML代码块的图片进度轻松布局,分以下几有些:

    •   背景图片的宽与高、居中、边框、超越边界隐藏、relative相对定位
    •   自身战机的宽与高、absolute相对父级定位与z-index优先级最高
    •   本身战机暗中同意隐藏,游戏发轫则滑出
    •   子弹、敌机的absolute相对父级定位
    •   子弹、敌机的默许隐藏,游戏起头则透过仿制突显
    •   敌机与世长辞的图纸定位与隐藏
    •   分数的字体大小设置及确定地点

bf88必发唯一官网 16bf88必发唯一官网 17

<base href="http://images.cnblogs.com/cnblogs_com/suoning/860380/" />

<style>
        .bg {
            background-image: url("o_bg.jpg");
            height: 500px;
            width: 300px;
            position: relative;
            margin-left: 40%;
            margin-top: 5%;
            overflow: hidden;
            border: 1px;
        }

        .me-plan {
            width: 99px;
            height: 112px;
            background-image: url("o_me.png");
            position: absolute;
            top: 80%;
            left: 35%;
            display: none;
            z-index: 666;
        }

        .bullet {
            position: absolute;
            display: none;
            left: -10px;
        }

        .x, .x2 {
            position: absolute;
            display: none;
        }

        .lift {
            position: absolute;
            top: -110px;
        }

        .die {
            display: none;
        }

        #play_num {
            font-size: 30px;
        }
    </style>

CSS代码

 

二、HTML内容

  HTML 基础知识戳那

  HTML内容把须要的图片能源以相应标签格式写出就可以,分为以下几有个别:

    •   背景图片
    •   本人战机的图纸
    •   子弹的图样
    •   敌机的图片
    •   敌机挂了的图形
    •       总括分数的岗位留给

bf88必发唯一官网 18<base
href=”” />
<div class=”bg”> <div class=”me-plan”></div> <div
id=”play_num”></div> <div class=”bullet”> <img
src=”o_cartridge.png”> </div> <div class=”x”> <img
class=”lift” src=”o_plain1.png”> <img class=”die”
src=”o_die1.png”> </div> <div class=”x2″> <img
class=”lift” src=”o_plain2.png”> <img class=”die”
src=”o_die2.png”> </div> </div> HTML代码

 

快来一同自慰,写出外挂版微信自慰。二:小飞机到底层时熄灭,即y = 0时候没有。(那么些标准暂且失效)

四、jQuery 代码块

  JavaScript基础知识戳那,DOM相关戳那,jQuery全套戳那

   jQuery代码块是先后的重大落成部分:

    •   本身战机得须要随着鼠标移动
    •   自个儿战机移动的还要子弹也亟需同时做相对稳定的移位
    •   敌机随机从上到下移动
    •   敌机若与子弹相碰,则炸毁,相应分数扩展

 

四、jQuery 代码块

  JavaScript基础知识戳那,DOM相关戳那,jQuery全套戳那

   jQuery代码块是先后的器重落成部分:

    •   自个儿战机得供给随着鼠标移动
    •   本人战机移动的还要子弹也亟需同时做相对稳固的活动
    •   敌机随机从上到下移动
    •   敌机若与子弹相碰,则炸毁,相应分数扩大

 

三、CSS布局

  CSS基础知识戳那

  CSS代码块只需把HTML代码块的图纸进度轻易布局,分以下几有个别:

    •   背景图片的宽与高、居中、边框、超越边界隐藏、relative相对定位
    •   自个儿战机的宽与高、absolute相对父级定位与z-index优先级最高
    •   本人战机私下认可隐藏,游戏开端则滑出
    •   子弹、敌机的absolute相对父级定位
    •   子弹、敌机的暗中认可隐藏,游戏初始则透过仿制体现
    •   敌机过逝的图形定位与隐藏
    •   分数的字体大小设置及定点

bf88必发唯一官网 19<base
href=”” />
<style> .bg { background-image: url(“o_bg.jpg”); height: 500px;
width: 300px; position: relative; margin-left: 40%; margin-top: 5%;
overflow: hidden; border: 1px; } .me-plan { width: 99px; height: 112px;
background-image: url(“o_me.png”); position: absolute; top: 80%; left:
35%; display: none; z-index: 666; } .bullet { position: absolute;
display: none; left: -10px; } .x, .x2 { position: absolute; display:
none; } .lift { position: absolute; top: -110px; } .die { display: none;
} #play_num { font-size: 30px; } </style> CSS代码

 

三:小飞机从顶层y = 10档期的顺序地点变动,x地点随机,每一次随机生成八个

1、程序所需值与预约义

次第在一开端就亟须取得相应的值,以便之后调用

背景的宽与高 :判定本身战机是还是不是超越边界,假如过量则一定在边际内某1块;

团结战机的宽与高:也做超过边界固定的功用,加上那个值越来越准确;

背景图片相对父成分的距离:这些值也足以说背景图片绝对body的离开,因为必要不断赢得鼠标的坐标,来明确本身战机的职位,鼠标的坐标减去那几个值就是因素相对父级元素的距离;

还亟需预定义一些值:

play_num:游戏的得分,默确定位0;

FD = {}:定义二个”字典”,存放每一个敌机的靶子与对于标签,用于推断碰撞。

    var dwidth = $('.bg').width();      // 背景的宽与高
    var dheight = $('.bg').height();
    var fwidth = $('.me-plan').width(); // 自己战机的宽与高
    var fheight = $('.me-plan').height();
    var zwidth = $('.bullet').width();  // 子弹的宽与高
    var zheight = $('.bullet').height();
    var t = $('.bg').offset().top;      // 背景相对父元素的距离
    var l = $('.bg').offset().left;
    var FD = {};        // 存放敌的的对象,封装坐标及标签
    var play_num = 0;   // 计算分数

 

一、程序所需值与预订义

程序在壹从头就必须拿到相应的值,以便之后调用

背景的宽与高 :决断自身战机是不是当先边界,假若超越则一定在分界内某1块;

协和战机的宽与高:也做跨越边界固定的机能,加上这一个值更规范;

背景图片相对父成分的相距:这些值也能够说背景图片相对body的距离,因为急需不停获得鼠标的坐标,来规定本人战机的岗位,鼠标的坐标减去那个值便是因素相对父级成分的相距;

还要求预订义一些值:

play_num:游戏的得分,默断定位0;

FD = {}:定义一个”字典”,存放各个敌机的对象与对于标签,用于剖断碰撞。

    var dwidth = $('.bg').width();      // 背景的宽与高
    var dheight = $('.bg').height();
    var fwidth = $('.me-plan').width(); // 自己战机的宽与高
    var fheight = $('.me-plan').height();
    var zwidth = $('.bullet').width();  // 子弹的宽与高
    var zheight = $('.bullet').height();
    var t = $('.bg').offset().top;      // 背景相对父元素的距离
    var l = $('.bg').offset().left;
    var FD = {};        // 存放敌的的对象,封装坐标及标签
    var play_num = 0;   // 计算分数

 

四、jQuery 代码块

  JavaScript基础知识戳那,DOM相关戳那,jQuery全套戳那

   jQuery代码块是程序的严重性完成部分:

    •   本人战机得供给随着鼠标移动
    •   自个儿战机移动的还要子弹也急需同时做相对固定的位移
    •   敌机随机从上到下移动
    •   敌机若与子弹相碰,则炸毁,相应分数扩充

 

四:主飞机本身尺寸y=1。当主飞机和小飞机下多个坐标都为(x,一)时,碰撞。游戏甘休。

二、鼠标移动事件

  自身战机供给持续跟着鼠标走,全数必须定义鼠标移动事件;

  event.clientX与event.clientY分别为鼠标的x和y轴距离;

  判别假诺过量边界,则战机固定地方;

  鼠标地点坐相应管理正是战机的职位(实时)。

$(".me-plan").mousemove(function m(event) {
        /*
         鼠标移动事件
         */
        var x = event.clientX - fwidth / 2;
        var y = event.clientY - fheight / 2;
        MovePlanM(x - l, y - t);
    })

    function MovePlanM(x, y) {
        /*
         战机随鼠标移动
         */
        if (x >= dwidth) {
            x = dwidth - fwidth;
        } else if (y >= dheight) {
            y = dheight - fheight;
        }
        $('.me-plan').css({
            "top": y + "px",
            "left": x + "px",
        });
    }

 

二、鼠标移动事件

  本身战机须求不停跟着鼠标走,全部必须定义鼠标移动事件;

  event.clientX与event.clientY分别为鼠标的x和y轴距离;

  判别假诺超过边界,则战机固定地方;

  鼠标地方坐相应管理正是战机的地方(实时)。

$(".me-plan").mousemove(function m(event) {
        /*
         鼠标移动事件
         */
        var x = event.clientX - fwidth / 2;
        var y = event.clientY - fheight / 2;
        MovePlanM(x - l, y - t);
    })

    function MovePlanM(x, y) {
        /*
         战机随鼠标移动
         */
        if (x >= dwidth) {
            x = dwidth - fwidth;
        } else if (y >= dheight) {
            y = dheight - fheight;
        }
        $('.me-plan').css({
            "top": y + "px",
            "left": x + "px",
        });
    }

 

1、程序所需值与预约义

次第在1始发就必须取得相应的值,以便之后调用

背景的宽与高 :判定本身战机是或不是高于边界,假若过量则一定在分界内某壹块;

和煦战机的宽与高:也做超越边界固定的功用,加上那几个值越来越精确;

背景图片相对父成分的相距:这些值也可以说背景图片相对body的距离,因为需求不停得到鼠标的坐标,来分明本身战机的任务,鼠标的坐标减去这么些值正是因素相对父级成分的相距;

还须求预订义一些值:

play_num:游戏的得分,默断定位0;

FD = {}:定义贰个”字典”,存放各类敌机的对象与对于标签,用于决断碰撞。

    var dwidth = $('.bg').width();      // 背景的宽与高
    var dheight = $('.bg').height();
    var fwidth = $('.me-plan').width(); // 自己战机的宽与高
    var fheight = $('.me-plan').height();
    var zwidth = $('.bullet').width();  // 子弹的宽与高
    var zheight = $('.bullet').height();
    var t = $('.bg').offset().top;      // 背景相对父元素的距离
    var l = $('.bg').offset().left;
    var FD = {};        // 存放敌的的对象,封装坐标及标签
    var play_num = 0;   // 计算分数

 

 

3、随机值

   每一遍敌机出现的x轴地点是见仁见智的,全部需求写二个随意数函数;

  能够以做为出现敌机的花色,小飞机与大飞机。

function Randmon() {
        /*
         用于随机生成x轴与敌机型号
         */
        var num_one = Math.random();
        var num_two = num_one * 100;
        if (num_two < 80) {
            num_two += 100;
        }
        num_stree = Math.round(Math.abs(num_two));
        return num_stree
    }

 

3、随机值

   每一次敌机出现的x轴地方是例外的,全数必要写2个随意数函数;

  能够以做为现身敌机的项目,小飞机与大飞机。

function Randmon() {
        /*
         用于随机生成x轴与敌机型号
         */
        var num_one = Math.random();
        var num_two = num_one * 100;
        if (num_two < 80) {
            num_two += 100;
        }
        num_stree = Math.round(Math.abs(num_two));
        return num_stree
    }

 

贰、鼠标移动事件

  自身战机要求不停跟着鼠标走,全数必须定义鼠标移动事件;

  event.clientX与event.clientY分别为鼠标的x和y轴距离;

  决断若是凌驾边界,则战机固定地点;

  鼠标地点坐相应管理正是战机的岗位(实时)。

$(".me-plan").mousemove(function m(event) {
        /*
         鼠标移动事件
         */
        var x = event.clientX - fwidth / 2;
        var y = event.clientY - fheight / 2;
        MovePlanM(x - l, y - t);
    })

    function MovePlanM(x, y) {
        /*
         战机随鼠标移动
         */
        if (x >= dwidth) {
            x = dwidth - fwidth;
        } else if (y >= dheight) {
            y = dheight - fheight;
        }
        $('.me-plan').css({
            "top": y + "px",
            "left": x + "px",
        });
    }

 

此前版本运维落成会发觉如下2个bug:小飞机生成因为是即兴的,所以也许Infiniti制生成n个,个中有
n=<三个飞机地方会重复,所以会产出以下场景 :

4、敌机类

  二次能够出现1个之上敌机,而敌机属性都类似,全体需求写二个类;

  几个参数,分别为x轴,y轴,还有敌机的类别;

  通过仿制再插入对应标签达成七个敌机;

  通过机械漏刻使y轴自加,使敌机不断向下移动;

  判别假如过量背景,则甘休计时器,删除相应标签;

  把目的都到场FD字典中;

  注意:计时器为单独函数,不属于类,所以必要选用承袭。

function FoePlan(x, y, BB) {
        /*
         克隆及移动敌机
         */
        this.x = x;
        this.y = y;
        this.BB = BB;
        this.Clone = function () {
            var objj = $(this.BB).first().clone(true).appendTo(".bg").css("display", "block");
            var s2 = setInterval(MovePlanFirst, 100);

            function MovePlanFirst() {
                FoePlan.call(this, x, y, BB);     // 类的继承
                var dic = [this.x, this.y, objj];
                FD[this] = dic;
                RemovePlan(this.y, s2, objj);
                y += 20;
                objj.css({
                    "top": this.y + "px",
                    "left": this.x + "px",
                })
            }
        }
    }

    function RemovePlan(y, s2, objj) {
        /*
         用于删除出镜的敌机
         */
        if (y > 600) {
            clearInterval(s2);
            $(objj).remove();
        }
    }

 

4、敌机类

  叁回可以现身3个以上敌机,而敌机属性都接近,全数供给写1个类;

  多个参数,分别为x轴,y轴,还有敌机的门类;

  通过仿制再插入对应标签落成七个敌机;

  通过机械漏刻使y轴自加,使敌机不断向下移动;

  判别要是抢先背景,则甘休停车计时器,删除相应标签;

  把目标都投入FD字典中;

  注意:计时器为单独函数,不属于类,所以须要利用继承。

function FoePlan(x, y, BB) {
        /*
         克隆及移动敌机
         */
        this.x = x;
        this.y = y;
        this.BB = BB;
        this.Clone = function () {
            var objj = $(this.BB).first().clone(true).appendTo(".bg").css("display", "block");
            var s2 = setInterval(MovePlanFirst, 100);

            function MovePlanFirst() {
                FoePlan.call(this, x, y, BB);     // 类的继承
                var dic = [this.x, this.y, objj];
                FD[this] = dic;
                RemovePlan(this.y, s2, objj);
                y += 20;
                objj.css({
                    "top": this.y + "px",
                    "left": this.x + "px",
                })
            }
        }
    }

    function RemovePlan(y, s2, objj) {
        /*
         用于删除出镜的敌机
         */
        if (y > 600) {
            clearInterval(s2);
            $(objj).remove();
        }
    }

 

3、随机值

   每一趟敌机出现的x轴地点是见仁见智的,全部供给写三个随意数函数;

  能够以做为出现敌机的花色,小飞机与大飞机。

function Randmon() {
        /*
         用于随机生成x轴与敌机型号
         */
        var num_one = Math.random();
        var num_two = num_one * 100;
        if (num_two < 80) {
            num_two += 100;
        }
        num_stree = Math.round(Math.abs(num_two));
        return num_stree
    }

 

只发射了五个炮弹,却在等级次序方向打掉了贰十三个飞机,这是因为变化飞机重复了,以致有3三个飞机随机变化在三个y
= 10的程度地方上。

五、子弹相关

  七个参数,分别为自身战机x轴与y轴坐标,用于跟着战机相对移动;

  停车计时器让y轴坐标自减,对应的子弹会直接上涨;

  子弹超过边界则删除反应计时器与相应标签;

  循环读取FD字典,获得各种敌机的坐标,剖断碰撞则爆炸效果,并脱离;

  倘若击落敌机对应分数扩充;

  击落敌机删除相应标签与FD中的值。

function MoveBullet(x, y) {
        /*
         克隆及移动子弹、判断子弹是否射到敌机
         */
        var obj = $('.bullet').first().clone(true).appendTo(".bg").css("display", "block");
        var s1 = setInterval(function () {
            for (var item in FD) {      // 判断子弹是否射到敌机
                var xx = FD[item][0];
                var yy = FD[item][1];
                var objj = FD[item][2];
                var flag = false;

                if ((xx < x) && (x < (xx + 60)) && (yy < y) && ( y < (yy + 60))) {
                    $(objj).children().first().css("display", "none");
                    $(objj).children().last().css("display", "block").fadeOut("1600").fadeTo("slow", 0);
                    play_num += 10;
                    $('#play_num').text(play_num);
                }
                if (flag) {
                    $(objj).remove();
                    flag = false;
                }
            }
            RemoveBullet(y, s1, obj);
            y -= 20;
            obj.css({
                "top": (y) + "px",
                "left": x + "px",
            })
        }, 100);
    }

    function RemoveBullet(y, s1, obj) {
        /*
         删除超出边界的子弹
         */
        if (y < 0) {
            clearInterval(s1);
            $(obj).remove();
        }
    }

 

伍、子弹相关

  七个参数,分别为友好战机x轴与y轴坐标,用于跟着战机相对移动;

  机械漏刻让y轴坐标自减,对应的枪弹会直接回涨;

  子弹超过边界则删除沙漏与相应标签;

  循环读取FD字典,得到各种敌机的坐标,决断碰撞则爆炸效果,并退出;

  假若击落敌机对应分数增添;

  击落敌机删除相应标签与FD中的值。

function MoveBullet(x, y) {
        /*
         克隆及移动子弹、判断子弹是否射到敌机
         */
        var obj = $('.bullet').first().clone(true).appendTo(".bg").css("display", "block");
        var s1 = setInterval(function () {
            for (var item in FD) {      // 判断子弹是否射到敌机
                var xx = FD[item][0];
                var yy = FD[item][1];
                var objj = FD[item][2];
                var flag = false;

                if ((xx < x) && (x < (xx + 60)) && (yy < y) && ( y < (yy + 60))) {
                    $(objj).children().first().css("display", "none");
                    $(objj).children().last().css("display", "block").fadeOut("1600").fadeTo("slow", 0);
                    play_num += 10;
                    $('#play_num').text(play_num);
                }
                if (flag) {
                    $(objj).remove();
                    flag = false;
                }
            }
            RemoveBullet(y, s1, obj);
            y -= 20;
            obj.css({
                "top": (y) + "px",
                "left": x + "px",
            })
        }, 100);
    }

    function RemoveBullet(y, s1, obj) {
        /*
         删除超出边界的子弹
         */
        if (y < 0) {
            clearInterval(s1);
            $(obj).remove();
        }
    }

 

4、敌机类

  三遍能够出现三个以上敌机,而敌机属性都类似,全体必要写2个类;

  多个参数,分别为x轴,y轴,还有敌机的品类;

  通过仿制再插入对应标签落成四个敌机;

  通过机械漏刻使y轴自加,使敌机不断向下活动;

  判定即使跨越背景,则结束沙漏,删除相应标签;

  把对象都进入FD字典中;

  注意:停车计时器为单独函数,不属于类,所以需求接纳承袭。

function FoePlan(x, y, BB) {
        /*
         克隆及移动敌机
         */
        this.x = x;
        this.y = y;
        this.BB = BB;
        this.Clone = function () {
            var objj = $(this.BB).first().clone(true).appendTo(".bg").css("display", "block");
            var s2 = setInterval(MovePlanFirst, 100);

            function MovePlanFirst() {
                FoePlan.call(this, x, y, BB);     // 类的继承
                var dic = [this.x, this.y, objj];
                FD[this] = dic;
                RemovePlan(this.y, s2, objj);
                y += 20;
                objj.css({
                    "top": this.y + "px",
                    "left": this.x + "px",
                })
            }
        }
    }

    function RemovePlan(y, s2, objj) {
        /*
         用于删除出镜的敌机
         */
        if (y > 600) {
            clearInterval(s2);
            $(objj).remove();
        }
    }

 

标题标BUG已经周全,加三个小飞机刷出条件不重叠。 

六、运营程序

  页面加载成功则初步运转游戏;

  电火花计时器获取自身战机的坐标,并传给子弹,让子弹不断开炮;

  放大计时器获取随机值,并传给敌机类,让敌机不断涌现。

    $(function () {
        /*
         页面加载完成初始化开始游戏
         */
        $(".me-plan").slideDown("900");
        setInterval(function () {
            var x = $(".me-plan").position().left + fwidth / 2;
            var y = $(".me-plan").position().top;
            MoveBullet(x, y);
        }, 200);
        setInterval(function () {
            var n = Randmon();
            if (n > 130) {
                var shape = '.x';
            } else {
                var shape = '.x2';
            }
            var obj = new FoePlan(n, 0, shape);
            obj.Clone();
        }, 1500);

    });

 

陆、运维程序

  页面加载成功则开首运维游戏;

  电磁料理计时器获取本人战机的坐标,并传给子弹,让子弹不断开炮;

  反应计时器获取随机值,并传给敌机类,让敌机不断涌现。

    $(function () {
        /*
         页面加载完成初始化开始游戏
         */
        $(".me-plan").slideDown("900");
        setInterval(function () {
            var x = $(".me-plan").position().left + fwidth / 2;
            var y = $(".me-plan").position().top;
            MoveBullet(x, y);
        }, 200);
        setInterval(function () {
            var n = Randmon();
            if (n > 130) {
                var shape = '.x';
            } else {
                var shape = '.x2';
            }
            var obj = new FoePlan(n, 0, shape);
            obj.Clone();
        }, 1500);

    });

 

伍、子弹相关

  八个参数,分别为温馨战机x轴与y轴坐标,用于跟着战机相对移动;

  放大计时器让y轴坐标自减,对应的枪弹会直接上涨;

  子弹超出边界则删除放大计时器与相应标签;

  循环读取FD字典,获得每个敌机的坐标,决断碰撞则爆炸效果,并退出;

  借使击落敌机对应分数扩大;

  击落敌机删除相应标签与FD中的值。

function MoveBullet(x, y) {
        /*
         克隆及移动子弹、判断子弹是否射到敌机
         */
        var obj = $('.bullet').first().clone(true).appendTo(".bg").css("display", "block");
        var s1 = setInterval(function () {
            for (var item in FD) {      // 判断子弹是否射到敌机
                var xx = FD[item][0];
                var yy = FD[item][1];
                var objj = FD[item][2];
                var flag = false;

                if ((xx < x) && (x < (xx + 60)) && (yy < y) && ( y < (yy + 60))) {
                    $(objj).children().first().css("display", "none");
                    $(objj).children().last().css("display", "block").fadeOut("1600").fadeTo("slow", 0);
                    play_num += 10;
                    $('#play_num').text(play_num);
                }
                if (flag) {
                    $(objj).remove();
                    flag = false;
                }
            }
            RemoveBullet(y, s1, obj);
            y -= 20;
            obj.css({
                "top": (y) + "px",
                "left": x + "px",
            })
        }, 100);
    }

    function RemoveBullet(y, s1, obj) {
        /*
         删除超出边界的子弹
         */
        if (y < 0) {
            clearInterval(s1);
            $(obj).remove();
        }
    }

 

代码如下:

 5、完整代码

 注:访问代码里图片路线需加前缀:

http://images.cnblogs.com/cnblogs_com/suoning/860380/ + 图片名字

bf88必发唯一官网 20bf88必发唯一官网 21

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外挂版打飞机 Nick Suo</title>
    <base href="http://images.cnblogs.com/cnblogs_com/suoning/860380/"/>
    <style>
        .bg {
            background-image: url("o_bg.jpg");
            height: 500px;
            width: 300px;
            position: relative;
            margin-left: 40%;
            margin-top: 5%;
            overflow: hidden;
            border: 1px;
        }

        .me-plan {
            width: 99px;
            height: 112px;
            background-image: url("o_me.png");
            position: absolute;
            top: 80%;
            left: 35%;
            display: none;
            z-index: 666;
        }

        .bullet {
            position: absolute;
            display: none;
            left: -10px;
        }

        .x, .x2 {
            position: absolute;
            display: none;
        }

        .lift {
            position: absolute;
            top: -110px;
        }

        .die {
            display: none;
        }

        #play_num {
            font-size: 30px;
        }
    </style>
</head>
<body>
<div class="bg">
    <div class="me-plan"></div>
    <div id="play_num"></div>
    <div class="bullet">
        <img src="o_cartridge.png">
    </div>
    <div class="x">
        <img class="lift" src="o_plain1.png">
        <img class="die" src="o_die1.png">
    </div>
    <div class="x2">
        <img class="lift" src="o_plain2.png">
        <img class="die" src="o_die2.png">
    </div>
</div>


<script src="../jquery-1.12.4.js"></script>
<script>
    /*
     build time: Jul 28,2016 23:59
     author: Nick Suo
     email: 630571017@qq.com
     */
    var dwidth = $('.bg').width();      // 背景的宽与高
    var dheight = $('.bg').height();
    var fwidth = $('.me-plan').width(); // 自己战机的宽与高
    var fheight = $('.me-plan').height();
    var zwidth = $('.bullet').width();  // 子弹的宽与高
    var zheight = $('.bullet').height();
    var t = $('.bg').offset().top;      // 背景相对父元素的距离
    var l = $('.bg').offset().left;
    var FD = {};        // 存放敌的的对象,封装坐标及标签
    var play_num = 0;   // 计算分数


    $(".me-plan").mousemove(function m(event) {
        /*
         鼠标移动事件
         */
        var x = event.clientX - fwidth / 2;
        var y = event.clientY - fheight / 2;
        MovePlanM(x - l, y - t);
    })

    function MovePlanM(x, y) {
        /*
         战机随鼠标移动
         */
        if (x >= dwidth) {
            x = dwidth - fwidth;
        } else if (y >= dheight) {
            y = dheight - fheight;
        }
        $('.me-plan').css({
            "top": y + "px",
            "left": x + "px",
        });
    }

    $(function () {
        /*
         页面加载完成初始化开始游戏
         */
        $(".me-plan").slideDown("900");
        setInterval(function () {
            var x = $(".me-plan").position().left + fwidth / 2;
            var y = $(".me-plan").position().top;
            MoveBullet(x, y);
        }, 200);
        setInterval(function () {
            var n = Randmon();
            if (n > 130) {
                var shape = '.x';
            } else {
                var shape = '.x2';
            }
            var obj = new FoePlan(n, 0, shape);
            obj.Clone();
        }, 1500);

    });

    function MoveBullet(x, y) {
        /*
         克隆及移动子弹、判断子弹是否射到敌机
         */
        var obj = $('.bullet').first().clone(true).appendTo(".bg").css("display", "block");
        var s1 = setInterval(function () {
            for (var item in FD) {      // 判断子弹是否射到敌机
                var xx = FD[item][0];
                var yy = FD[item][1];
                var objj = FD[item][2];
                var flag = false;

                if ((xx < x) && (x < (xx + 60)) && (yy < y) && ( y < (yy + 60))) {
                    $(objj).children().first().css("display", "none");
                    $(objj).children().last().css("display", "block").fadeOut("1600").fadeTo("slow", 0);
                    play_num += 10;
                    $('#play_num').text(play_num);
                }
                if (flag) {
                    $(objj).remove();
                    flag = false;
                }
            }
            RemoveBullet(y, s1, obj);
            y -= 20;
            obj.css({
                "top": (y) + "px",
                "left": x + "px",
            })
        }, 100);
    }

    function RemoveBullet(y, s1, obj) {
        /*
         删除超出边界的子弹
         */
        if (y < 0) {
            clearInterval(s1);
            $(obj).remove();
        }
    }

    function FoePlan(x, y, BB) {
        /*
         克隆及移动敌机
         */
        this.x = x;
        this.y = y;
        this.BB = BB;
        this.Clone = function () {
            var objj = $(this.BB).first().clone(true).appendTo(".bg").css("display", "block");
            var s2 = setInterval(MovePlanFirst, 100);

            function MovePlanFirst() {
                FoePlan.call(this, x, y, BB);     // 类的继承
                var dic = [this.x, this.y, objj];
                FD[this] = dic;
                RemovePlan(this.y, s2, objj);
                y += 20;
                objj.css({
                    "top": this.y + "px",
                    "left": this.x + "px",
                })
            }
        }
    }

    function RemovePlan(y, s2, objj) {
        /*
         用于删除出镜的敌机
         */
        if (y > 600) {
            clearInterval(s2);
            $(objj).remove();
        }
    }

    function Randmon() {
        /*
         用于随机生成x轴与敌机型号
         */
        var num_one = Math.random();
        var num_two = num_one * 100;
        if (num_two < 80) {
            num_two += 100;
        }
        num_stree = Math.round(Math.abs(num_two));
        return num_stree
    }

</script>
</body>
</html>

View Code

 

没完没了立异中…

 5、完整代码

 注:访问代码里图片路径需加前缀:

http://images.cnblogs.com/cnblogs_com/suoning/860380/ + 图片名字

bf88必发唯一官网 22bf88必发唯一官网 23

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外挂版打飞机 Nick Suo</title>
    <base href="http://images.cnblogs.com/cnblogs_com/suoning/860380/"/>
    <style>
        .bg {
            background-image: url("o_bg.jpg");
            height: 500px;
            width: 300px;
            position: relative;
            margin-left: 40%;
            margin-top: 5%;
            overflow: hidden;
            border: 1px;
        }

        .me-plan {
            width: 99px;
            height: 112px;
            background-image: url("o_me.png");
            position: absolute;
            top: 80%;
            left: 35%;
            display: none;
            z-index: 666;
        }

        .bullet {
            position: absolute;
            display: none;
            left: -10px;
        }

        .x, .x2 {
            position: absolute;
            display: none;
        }

        .lift {
            position: absolute;
            top: -110px;
        }

        .die {
            display: none;
        }

        #play_num {
            font-size: 30px;
        }
    </style>
</head>
<body>
<div class="bg">
    <div class="me-plan"></div>
    <div id="play_num"></div>
    <div class="bullet">
        <img src="o_cartridge.png">
    </div>
    <div class="x">
        <img class="lift" src="o_plain1.png">
        <img class="die" src="o_die1.png">
    </div>
    <div class="x2">
        <img class="lift" src="o_plain2.png">
        <img class="die" src="o_die2.png">
    </div>
</div>


<script src="../jquery-1.12.4.js"></script>
<script>
    /*
     build time: Jul 28,2016 23:59
     author: Nick Suo
     email: 630571017@qq.com
     */
    var dwidth = $('.bg').width();      // 背景的宽与高
    var dheight = $('.bg').height();
    var fwidth = $('.me-plan').width(); // 自己战机的宽与高
    var fheight = $('.me-plan').height();
    var zwidth = $('.bullet').width();  // 子弹的宽与高
    var zheight = $('.bullet').height();
    var t = $('.bg').offset().top;      // 背景相对父元素的距离
    var l = $('.bg').offset().left;
    var FD = {};        // 存放敌的的对象,封装坐标及标签
    var play_num = 0;   // 计算分数


    $(".me-plan").mousemove(function m(event) {
        /*
         鼠标移动事件
         */
        var x = event.clientX - fwidth / 2;
        var y = event.clientY - fheight / 2;
        MovePlanM(x - l, y - t);
    })

    function MovePlanM(x, y) {
        /*
         战机随鼠标移动
         */
        if (x >= dwidth) {
            x = dwidth - fwidth;
        } else if (y >= dheight) {
            y = dheight - fheight;
        }
        $('.me-plan').css({
            "top": y + "px",
            "left": x + "px",
        });
    }

    $(function () {
        /*
         页面加载完成初始化开始游戏
         */
        $(".me-plan").slideDown("900");
        setInterval(function () {
            var x = $(".me-plan").position().left + fwidth / 2;
            var y = $(".me-plan").position().top;
            MoveBullet(x, y);
        }, 200);
        setInterval(function () {
            var n = Randmon();
            if (n > 130) {
                var shape = '.x';
            } else {
                var shape = '.x2';
            }
            var obj = new FoePlan(n, 0, shape);
            obj.Clone();
        }, 1500);

    });

    function MoveBullet(x, y) {
        /*
         克隆及移动子弹、判断子弹是否射到敌机
         */
        var obj = $('.bullet').first().clone(true).appendTo(".bg").css("display", "block");
        var s1 = setInterval(function () {
            for (var item in FD) {      // 判断子弹是否射到敌机
                var xx = FD[item][0];
                var yy = FD[item][1];
                var objj = FD[item][2];
                var flag = false;

                if ((xx < x) && (x < (xx + 60)) && (yy < y) && ( y < (yy + 60))) {
                    $(objj).children().first().css("display", "none");
                    $(objj).children().last().css("display", "block").fadeOut("1600").fadeTo("slow", 0);
                    play_num += 10;
                    $('#play_num').text(play_num);
                }
                if (flag) {
                    $(objj).remove();
                    flag = false;
                }
            }
            RemoveBullet(y, s1, obj);
            y -= 20;
            obj.css({
                "top": (y) + "px",
                "left": x + "px",
            })
        }, 100);
    }

    function RemoveBullet(y, s1, obj) {
        /*
         删除超出边界的子弹
         */
        if (y < 0) {
            clearInterval(s1);
            $(obj).remove();
        }
    }

    function FoePlan(x, y, BB) {
        /*
         克隆及移动敌机
         */
        this.x = x;
        this.y = y;
        this.BB = BB;
        this.Clone = function () {
            var objj = $(this.BB).first().clone(true).appendTo(".bg").css("display", "block");
            var s2 = setInterval(MovePlanFirst, 100);

            function MovePlanFirst() {
                FoePlan.call(this, x, y, BB);     // 类的继承
                var dic = [this.x, this.y, objj];
                FD[this] = dic;
                RemovePlan(this.y, s2, objj);
                y += 20;
                objj.css({
                    "top": this.y + "px",
                    "left": this.x + "px",
                })
            }
        }
    }

    function RemovePlan(y, s2, objj) {
        /*
         用于删除出镜的敌机
         */
        if (y > 600) {
            clearInterval(s2);
            $(objj).remove();
        }
    }

    function Randmon() {
        /*
         用于随机生成x轴与敌机型号
         */
        var num_one = Math.random();
        var num_two = num_one * 100;
        if (num_two < 80) {
            num_two += 100;
        }
        num_stree = Math.round(Math.abs(num_two));
        return num_stree
    }

</script>
</body>
</html>

View Code

 

不止创新中…

6、运维程序

  页面加载成功则初始运营游戏;

  电磁打点计时器获取自身战机的坐标,并传给子弹,让子弹不断开炮;

  放大计时器获取随机值,并传给敌机类,让敌机不断涌现。

    $(function () {
        /*
         页面加载完成初始化开始游戏
         */
        $(".me-plan").slideDown("900");
        setInterval(function () {
            var x = $(".me-plan").position().left + fwidth / 2;
            var y = $(".me-plan").position().top;
            MoveBullet(x, y);
        }, 200);
        setInterval(function () {
            var n = Randmon();
            if (n > 130) {
                var shape = '.x';
            } else {
                var shape = '.x2';
            }
            var obj = new FoePlan(n, 0, shape);
            obj.Clone();
        }, 1500);

    });

 

import random as r

import sys

legal_x = [0,10]

legal_y = [0,25]

class Big:

    def __init__(self):

        """在y=1随机生成炮台位置"""

        self.x = r.randint(0,10)

        self.y = 1

 

    def move(self):

        self.Interval = []

        """随机移动左右方向并移动到新的位置(x,1)"""

        self.step = r.randint(0,legal_x[1])

        self.direction = r.randint(-1,1)#方向,-1为左,0不移动,1为右

        new_x = self.x + self.direction * self.step

        mew_y = self.y

        """判断是否越界"""

        if new_x > legal_x[1]:

            pos_x = legal_x[1] - (new_x - legal_x[1])

            pos_y = mew_y

        elif new_x < legal_x[0]:

            pos_x = legal_x[0] - new_x

            pos_y = mew_y

        else:

            pos_x = new_x

            pos_y = mew_y

 

        """炮台移动前后对应坐标"""

        if self.x > pos_x:

            for i in range(pos_x,self.x + 1 ):

                self.Interval.append(i)

            print("炮台从坐标x=%d移动到x=%d,沿途轰了%d炮"%(self.x,pos_x,self.x + 1 -pos_x ))

            print(">>>轰出%d个炮的位置是x ="% (self.x + 1 -pos_x),end = "")

            print(self.Interval)

 

 5、完整代码

 注:访问代码里图片路线需加前缀:

http://images.cnblogs.com/cnblogs_com/suoning/860380/ + 图片名字

bf88必发唯一官网 24<!DOCTYPE
html> <html lang=”en”> <head> <meta
charset=”UTF-8″> <title>外挂版手淫 尼克 Suo</title>
<base
href=”;
<style> .bg { background-image: url(“o_bg.jpg”); height: 500px;
width: 300px; position: relative; margin-left: 40%; margin-top: 5%;
overflow: hidden; border: 1px; } .me-plan { width: 99px; height: 112px;
background-image: url(“o_me.png”); position: absolute; top: 80%; left:
35%; display: none; z-index: 666; } .bullet { position: absolute;
display: none; left: -10px; } .x, .x2 { position: absolute; display:
none; } .lift { position: absolute; top: -110px; } .die { display: none;
} #play_num { font-size: 30px; } </style> </head>
<body> <div class=”bg”> <div
class=”me-plan”></div> <div id=”play_num”></div>
<div class=”bullet”> <img src=”o_cartridge.png”>
</div> <div class=”x”> <img class=”lift”
src=”o_plain1.png”> <img class=”die” src=”o_die1.png”>
</div> <div class=”x2″> <img class=”lift”
src=”o_plain2.png”> <img class=”die” src=”o_die2.png”>
</div> </div> <script
src=”../jquery-1.12.4.js”></script> <script> /* build
time: Jul 28,2016 23:59 author: Nick Suo email:
[email protected]
*/ var dwidth = $(‘.bg’).width(); // 背景的宽与高 var dheight =
$(‘.bg’).height(); var fwidth = $(‘.me-plan’).width(); //
本身战机的宽与高 var fheight = $(‘.me-plan’).height(); var zwidth =
$(‘.bullet’).width(); // 子弹的宽与高 var zheight =
$(‘.bullet’).height(); var t = $(‘.bg’).offset().top; //
背景相对父元素的距离 var l = $(‘.bg’).offset().left; var FD = {}; //
存放敌的的目标,封装坐标及标签 var play_num = 0; // 总括分数
$(“.me-plan”).mousemove(function m(event) { /* 鼠标移动事件 */ var x =
event.clientX – fwidth / 2; var y = event.clientY – fheight / 2;
MovePlanM(x – l, y – t); }) function MovePlanM(x, y) { /*
战机随鼠标移动 */ if (x >= dwidth) { x = dwidth – fwidth; } else if
(y >= dheight) { y = dheight – fheight; } $(‘.me-plan’).css({ “top”:
y + “px”, “left”: x + “px”, }); } $(function () { /*
页面加载成功开始化伊始游戏 */ $(“.me-plan”).slideDown(“900”);
setInterval(function () { var x = $(“.me-plan”).position().left + fwidth
/ 2; var y = $(“.me-plan”).position().top; MoveBullet(x, y); }, 200);
setInterval(function () { var n = Randmon(); if (n > 130) { var shape
= ‘.x’; } else { var shape = ‘.x2’; } var obj = new FoePlan(n, 0,
shape); obj.Clone(); }, 1500); }); function MoveBullet(x, y) { /*
克隆及运动子弹、推断子弹是或不是射到敌机 */ var obj =
$(‘.bullet’).first().clone(true).appendTo(“.bg”).css(“display”,
“block”); var s一 = setInterval(function () { for (var item in FD) { //
决断子弹是还是不是射到敌机 var xx = FD[item][0]; var yy = FD[item][1];
var objj = FD[item][2]; var flag = false; if ((xx < x) && (x <
(xx + 60)) && (yy < y) && ( y < (yy + 60))) {
$(objj).children().first().css(“display”, “none”);
$(objj).children().last().css(“display”,
“block”).fadeOut(“1600”).fadeTo(“slow”, 0); play_num += 10;
$(‘#play_num’).text(play_num); } if (flag) { $(objj).remove(); flag =
false; } } RemoveBullet(y, s1, obj); y -= 20; obj.css({ “top”: (y) +
“px”, “left”: x + “px”, }) }, 100); } function RemoveBullet(y, s1, obj)
{ /* 删除跨越边界的子弹 */ if (y < 0) { clearInterval(s1);
$(obj).remove(); } } function FoePlan(x, y, BB) { /* 克隆及运动敌机 */
this.x = x; this.y = y; this.BB = BB; this.Clone = function () { var
objj = $(this.BB).first().clone(true).appendTo(“.bg”).css(“display”,
“block”); var s二 = setInterval(MovePlanFirst, 十0); function
MovePlanFirst() { FoePlan.call(this, x, y, BB); // 类的接续 var dic =
[this.x, this.y, objj]; FD[this] = dic; RemovePlan(this.y, s2,
objj); y += 20; objj.css({ “top”: this.y + “px”, “left”: this.x + “px”,
}) } } } function RemovePlan(y, s2, objj) { /* 用于删除出镜的敌机 */
if (y > 600) { clearInterval(s2); $(objj).remove(); } } function
Randmon() { /* 用于随机生成x轴与敌机型号 */ var num_one =
Math.random(); var num_two = num_one * 100; if (num_two < 80) {
num_two += 100; } num_stree = Math.round(Math.abs(num_two)); return
num_stree } </script> </body> </html> View Code

 

没完没了更新中…

一、简要介绍 还记得诸多年前的春日,你小编一块儿手淫。 那就1…

 

        elif self.x < pos_x:

            for i in range(self.x,pos_x + 1):

                self.Interval.append(i)

            print("炮台从坐标x=%d移动到x=%d,沿途轰了%d炮"%(self.x,pos_x,pos_x + 1 -self.x ))

            print(">>>轰出%d个炮的位置是x ="% (pos_x + 1 -self.x),end = "")

            print(self.Interval)

        else:

            self.Interval.append(pos_x)

            print(">>>炮台原地轰了一炮")

            print(">>>轰炮的坐标是x = %s"% str(self.Interval))

 

        """初始化炮台到移动的目标"""

        self.x = pos_x

        self.y = pos_y

        return (pos_x,pos_y)

 

class Small:

    def __init__(self):

        """在y=25随机生成小飞机位置"""

        self.x = r.randint(0,legal_x[1])

        self.y = legal_y[1]

 

    def move(self):

        """固定移动,每次向下一步"""

        new_x = self.x

        mew_y = self.y - 1

        """判断是否越界"""

        if mew_y <= legal_y[0]:

            self.x = r.randint(0,legal_x[1])

            self.y = legal_y[1]

        else:

            self.x = new_x

            self.y = mew_y            

        return (new_x , mew_y)

 

class Boom:

    """核武器"""

    def __init__(self):

        self.x = r.randint(0,legal_x[1])

        self.y = 1

 

 

def DAFEIJI(n):  

    Scorer = 0

    list_s = []

    big_air = Big()

    """激光炮台出场"""

 

 

    i = r.randint(9,10)

    while n:

        list_pos = []

        boom = Boom()

        """核武器生成"""       

        for numbers in range(1 ,i + 1):            

            small_air = Small()#小飞机出场数量位置随机,设置不重叠

            if small_air.x not in list_pos:

                list_pos.append(small_air.x)

                list_s.append(small_air)

            else:

                continue                

        pos = big_air.move()

        n = n - 1

        if pos != (boom.x ,boom.y):

            for each in list_s[:]:

                pos_small = each.move()

                if pos == pos_small:

                    print(">>>>>>>很不幸! 您的炮台撞小飞机了....GG!!")#这个几率.....

                    print("本次打飞机的分数是:%d" % Scorer)

                    sys.exit(0)          

                elif pos_small[0] in (big_air.Interval):

                    """一条直线打的,其实是激光炮"""

                    print("一架小飞机被打掉..")

                    Scorer += 1

                    list_s.remove(each)

        else:

            print("炮台加载了核武器...======================清屏!=======================..")

            Scorer += len(list_s)

            list_s.clear()

    print("本次打飞机的分数是:%d" % Scorer)

#==============================主程序==================================

 

 

DAFEIJI(5)

开端分界面y值越大,游戏结束概率越小。 

 

想领悟更加多Python知识依然想与更加多的心上人一齐上学交流,能够加群705673780,群众文化艺术件内更加多无偿资料可供就学啊~

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图