php做一个五子棋图片,【图片】手把手开始制作HTML5在线五子棋对弈游戏【编程吧】_百度贴吧...

本文主要是介绍php做一个五子棋图片,【图片】手把手开始制作HTML5在线五子棋对弈游戏【编程吧】_百度贴吧...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

本次课题:制作HTML5在线五子棋对弈游戏。

预计开发周期:还没想好看心情,先预计7天完成。

备注:最近做学校课题有关数据挖掘的,有时候搞得没得头绪,做个小游戏和大家分享一下,并将小程序开源到Github,欢迎下载。

接上期。传送门:

>ID:Version:100.00,
Src:newArray("GobangLogo.png" unselectable="on" pic_type="1"/>

"),

Class:function(){

//初始化函数

this.Constructor = function(){

}

this.Draw = function(ctx){

var Img = this.Src[0];

ctx.drawImage(Img,this.Left-Img.width/2,this.Top-Img.height/2,Img.width,Img.height);

return true;

}

this.Over = function(){

var Img = this.Src[0];

var x = this.Left > 0 ? this.Left : 0-this.Left;

var y = this.Top > 0 ? this.Top : 0-this.Top;

if(x <= Img.width/2 && y <= Img.height/2)

return true;

return false;

}

}

},

{

ID:"BeginGameButton",

Version:100.00,

Src:new Array("BeginGame.png"),

Class:function(){

//初始化函数

this.Constructor = function(){

}

this.Draw = function(ctx){

var Img = this.Src[0];

ctx.drawImage(Img,this.Left-Img.width/2,this.Top-Img.height/2,Img.width,Img.height);

return true;

}

this.Over = function(){

var Img = this.Src[0];

var x = this.Left > 0 ? this.Left : 0-this.Left;

var y = this.Top > 0 ? this.Top : 0-this.Top;

if(x <= Img.width/2 && y <= Img.height/2)

return true;

return false;

}

}

}

];

按照我之前的讲解,这些代码并不是很难理解,大致都是在做一件事,分别讲我们之前的两个图片,以中心为控制坐标点定义出来。

定义之后,我们打开我们之前所做的HTML文件,我在之前的HTML文件引用的两个script的下面有注释,另创建Game.js文件单独存放游戏部分代码,也就现在创建Game.js,并在该处引入到HTML文件,我们这里将HTML文件保存为Gobang.html。

//用于移植的控制代码

使用代码编辑器打开Game.js,为了开发标准化防止变量泄露,我们创建一个js的自执行函数,并对外暴露一个Gobang的游戏类名。在Game.js文件中写入:

var Gobang;

(function(){

Gobang = function(Container){

//Gobang游戏类的构造函数

}

Gobang.fn = Gobang.prototype = {

}

})();

在构造函数中提供1个参数,用于传递存放Canvas画布的容器句柄,IAnimation.js插件并不是需要我们显式提供元素,而是提供容器,自行填充Canvas,填充的大小会自动充满整个容器内部,这样做的一大好处是大大方便了项目移植。

这里注意我们在编辑Gobang的类时,所有的成员变量要定义成 this.xxx,所有的成员函数应定义成 this.xxx= function(){},成员函数的定义也可以在prototype中使用形如JSON的定义方式,但变量数据不能在该处定义。这里我们约定所有函数使用首字母大写命名,对私有成员的标注我们在命名前增加一个下划线区分。

接下来我们在Gobang构造器中初始化IAnimation,写入如下代码:

this._Animation = new IAnimation(Container); //Container是参数

我们回到Game.html页面中提供一个Div容器,并使用CSS控制其大小,然后在用于移植的控制代码段中实例化Gobang类,随后我们打开浏览器查阅下执行效果。

ad9866ed665f411db693b56e3a05d188.png

给一下完整的Gobang.html代码内容:

基于HTML5的在线小游戏制作 Power By Liuxinyumo.cn

div{

border: 1px solid red;

width: 750px;

height: 600px;

}

//用于移植的控制代码

var Container = document.getElementById("container");

var game = new Gobang(Container);

那么现在有了游戏视窗,我们将我们第一个场景,欢迎页面布置上。由于该景布置归属于游戏自身,因此我们打开Game.js在该文件中进行定义。

在使用自定义元素前我们需要先对外部资源进行选择性的异步加载,这里是一个扩充数组,将我们所有用到的自定义元素ID进行列举,告诉引擎哪些是本次作业需要加载的资源项。通用的写法为:

var t = this;

function CallBack(a,b){

if(a == b){

t._DownloadFinished();

}

}

this._Animation.DownloadIMGing = CallBack; this._Animation.DownloadIMG(["GobangLogo","BeginGameButton"]);

我们需要将该代码段单独放到一个 Init()的函数里,同时对Gobang创建一个_DownloadFinished()函数。

_DownloadFinished()函数一旦之行到意味着我们想要加载的外部资源已经准备就绪,因此我们就可以调用自定义资源库中的元素了,我们在初始化阶段实际上是可以将游戏界面、欢迎界面一并装在,游戏界面我们随后设计,因此在代码结构上留好位置。

接下来开始布局欢迎界面,单独定义创建函数_CreateWelcomeScene(),引擎中我们使用Page来区分场景,因此首先利用引擎创建一个WelcomePage,并保存到成员函数中,将该名称在构造器中声明,以便日后查找。使用this._Animation.CreatePage() 即可创建一个场景,返回值赋值给我们所定义的this._WelcomePage变量。接下来我们就可以利用该变量向场景中添加自定义的元素了。

利用this._WelcomePage.AddElement("GobangLogo");即可创建Logo元素,但元素默认Visible属性均是false,所以先对其进行位置布局,再将其设置为可视。同理,我们对BeginGame也做同样的处理。

保存后我们运行下效果:

fbd70641211c26fff67201d11f1454e6.png

还算满意,给下Game.js到目前为止的完整代码。

var Gobang;

(function(){

Gobang = function(Container){

//Gobang游戏类的构造函数

this._Animation = new IAnimation(Container);

//成员变量声明

this._WelcomePage = null;

this._Init();

}

Gobang.fn = Gobang.prototype = {

_Init:function(){

var t = this;

function CallBack(a,b){

if(a == b){

t._DownloadFinished();

}

}

this._Animation.DownloadIMGing = CallBack;

this._Animation.DownloadIMG(["GobangLogo","BeginGameButton"]);

},

_DownloadFinished:function(){

//此处外部资源已经全部加载完毕可以创建游戏场景。

this._CreateWelcomeScene();

//这里留有部分用于创建游戏界面

},

_CreateWelcomeScene:function(){

//创建游戏欢迎页面

this._WelcomePage = this._Animation.CreatePage();

//在场景中布局

var Logo = this._WelcomePage.AddElement("GobangLogo");

Logo.Left(this._Animation.Width/2);

Logo.Top(this._Animation.Height/2-100);

Logo.Visible(true);

var BeginGameButton = this._WelcomePage.AddElement("BeginGameButton");

BeginGameButton.Left(this._Animation.Width/2);

BeginGameButton.Top(this._Animation.Height/2+20);

BeginGameButton.Visible(true);

}

}

})();

篇幅也已经很长了,本篇先结束。

这篇关于php做一个五子棋图片,【图片】手把手开始制作HTML5在线五子棋对弈游戏【编程吧】_百度贴吧...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400806

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal