js学习之地图生成

首先,上地图图片

接着,js,我们可以把图片看成一块块32*32像素的

var i;
var j;window.onload = function () {gamemap(15, 10, 10, "map.jpg");
}var mapimg = new Image();
var map = [[18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 55, 55, 18],[18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 55, 55, 18],[18, 18, 17, 17, 17, 17, 18, 18, 17, 17, 17, 17, 55, 55, 18],[18, 17, 17, 17, 18, 18, 18, 18, 18, 17, 17, 55, 55, 17, 18],[18, 17, 17, 18, 22, 23, 23, 23, 24, 18, 17, 55, 55, 17, 18],[18, 17, 17, 18, 25, 28, 26, 79, 27, 18, 55, 55, 17, 17, 18],[18, 17, 17, 17, 17, 10, 11, 12, 18, 18, 55, 55, 17, 17, 18],[18, 18, 17, 17, 10, 16, 16, 16, 11, 55, 55, 17, 17, 17, 18],[18, 18, 17, 17, 77, 16, 16, 16, 16, 21, 21, 17, 17, 17, 18],[18, 18, 18, 18, 18, 18, 18, 18, 18, 55, 55, 18, 18, 18, 18]
];
//创建构成地图的二维数组  function gamemap(x, y, num, url) {  //长个数,宽个数,一行个数,图片路径var canvas = document.getElementById("map");var context = canvas.getContext("2d");mapimg.src = url;mapimg.onload = function () {context.fillRect(0, 0, x * 32, y * 32);//画一个长480,宽320的矩形  for (i = 0; i < x; i++) {for (j = 0; j < y; j++) {drawTile(i * 32, j * 32, map[j][i], num);}}//循环调用绘制地图的函数,直到画完为止  
    }
}function drawTile(x, y, type, num) {var canvas = document.getElementById("map");var context = canvas.getContext("2d");context.drawImage(mapimg, type % num * 32, parseInt(type / num) * 32, 32, 32, x, y, 32, 32);
} 

最后,页面调用

<!DOCTYPE html>
<html>
<head><title>地图生成</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" /><script type="text/javascript" src="map.js"></script>
</head>
<body><canvas id="map" width="480px" height="320px" style="border: 1px solid gray;"></canvas>
</body>
</html>

效果图:

转载于:https://www.cnblogs.com/margin-gu/p/5025675.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux性能分析常用的命令

1&#xff0c;uptime 查看系统负责2&#xff0c;more 分页查看文件&#xff0c;enter显示下一行&#xff0c;空格显示下一页&#xff0c;F显示下一屏&#xff0c;B显示上一屏内容。3&#xff0c;top命令查看系统情况&#xff0c;按shif H可以查看当前线程的负载。4&#xff0…

C#中Console.ReadKey()与ConsoleKey的一些用法

1.控制台程序不让窗口闪过 对于控制台程序&#xff0c;Console.ReadKey()可以使窗口停留一下&#xff0c;直到点击键盘任一键为止。 2.通过按键进行选择 key Console.ReadKey(true).Key;if (key ConsoleKey.S){ Console.Write("Input the message:…

【TensorFlow】——Windows10、pycharm、Python3.6.4中安装CPU和GPU两种版本的TensorFlow

tensorflow分为两种&#xff0c;一种是cpu版本&#xff0c;一种是gpu版本 CPU版本可以直接通过pip进行安装&#xff1a; 这里是在国内镜像源中进行的下载&#xff0c;下载的版本是2.2.0版本 pip --default-timeout1000 install tensorflow-cpu2.2.0 -i http://pypi.douban.c…

vsftpd.conf 详解与实例配置

#################匿名权限控制############### anonymous_enableYES   #是否启用匿名用户 no_anon_passwordYES   #匿名用户login时不询问口令 下面这四个主要语句控制这文件和文件夹的上传、下载、创建、删除和重命名。 anon_upload_enable&#xff08;yes/no)…

下拉框选择

1&#xff0c;简单下拉框 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8" ><meta name"viewport" content"widthdevice-width, initial-scale1, user-scalableno, minimal-ui, maximum-scale1&qu…

基于C#的TCP/IP协议应用(一)

一、背景与概念 1.标准以太网 以太网是美国Xerox&#xff08;施乐&#xff09;公司的Palo Alto研究中心于1975年研制成功的&#xff0c;其核心技术起源于ALOHA网。目前以太网是指符合IEEE 802.3标准的局域网(LAN)产品组&#xff0c;其中IEEE 802.3是一组电气与电子工程师协会…

WORD文档的超链接无法打开——“由于本机的限制该操作已被取消”的解决方法

之前我电脑还很正常&#xff0c;最近装了一个打印机后&#xff0c;放在word文档的文字超链接就打不开了&#xff0c;提示说“由于本机的限制该操作已被取消”&#xff0c;请各位高手指导下该怎样解决这个问题&#xff1f; WORD文档的超链接无法打开的原因是文件在插入超链接之…

广义表的实现

广义表是一种非线性表的数据结构&#xff0c;是线性表的一种推广。他放松了对原子的控制&#xff0c;容许原子有自身的结构。其实现如下&#xff1a; #include<iostream>using namespace std;#include<assert.h>enum Type //原子类型有三种:头结点&#xff0c…

C#中List列表与Datagridview的用法

初始化 创建空列表 List<int> List new List<int>();2.使用var类型的前提是预先知道变量的类型&#xff0c;会根据变量赋值来判定属于什么类型&#xff0c;但此种赋值方法只能给局部变量赋值。 var list1 new List<string>();具体见&#xff1a; C#列表L…

Byte和byte[]数组

Byte和byte[]数组&#xff0c;“表示一个 8 位无符号整数, 一般为8位二进制数”。 Byte是计算机最基础的存储单位和最基础的通讯单位。 而所有的类型都是支持由byte[]类型转换而来。 为什么说Byte是最基础类型那&#xff0c; 其实这里的关键所在是&#xff0c;计算机最基础的算…

【图像处理】——opencv常用函数

目录 读取图像 注意: 1、imread和plt.show以及pil.image,show的区别: 2、imread中的rgb的顺序 显示图像

网络协议:TCP/IP、SOCKET、HTTP

网络七层 由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层&#xff0c;是网络工程师所研究的对象&#xff1b;传输层、会话层、表示层和应用层则被称作主机层&#xff0c;是用户所面向和关心的内…

halcon自标定

概念 该算法可以在不使用标定板的情况下计算相机内参&#xff0c;从而进行畸变校正&#xff0c;适用于畸变较大的情况。算法很简单&#xff1a; 1.求出图像边缘应进行分割。 2.基于筛选线段的自标定radial_distortion_self_calibration。 3.得到标定区域。 4.根据指定的径向畸…

jdk动态代理

简单的说&#xff0c;代理模式是在目标对象和访问对象之间增加了一层代理对象&#xff0c;所有的访问对象通过代理对象来实现对目标对象的调用。 代理对象和目标对象实现同一个接口&#xff0c;由代理对象来调用目标对象&#xff0c;对于外部来说&#xff0c;代理对象就可以替代…

【图像处理】——图像的灰度化处理(Python实现三种方法——最大值法、平均值法、加权均值法、gamma校正)

目录 一、什么是图像的灰度化? 二、灰度化的几种方法(最大值法、平均值法、加权均值法、gamma校正)

配置https

引子&#xff1a; 最近在一篇文章中了解到EFF(电子前哨基金会)为了推广https协议&#xff0c;成立了一个letsencrypt项目&#xff0c;可以发放免费的证书&#xff0c;此证书可以被大多数主流浏览器所信任&#xff0c;这个邪恶的念头一爆发&#xff0c;就让我走上了一条坎坷的不…

C# —— 序列化与反序列化

概念 序列化 通过使用不同的类(BinaryFormatter,SoapFormatter,XmlSerializer)将对象状态转换为可保持或传输的格式的过程,具体是将对象转变为字节流,其目的是为了保存数据的状态,方便后续还原调用。包括三种序列化形式:二进制序列化,SOAP序列化,XML序列化。于此过…

CentOS 6.5安装VNC server

1. 安装桌面&#xff0c;安装时选择了Desktop可以忽略 # yum groupinstall Desktop # yum install gnome-core xfce4 firefox 2. 安装VNC server # yum install tigervnc-server 3. 配置服务 # chkconfig vncserver on 4. 设置VNC用户密码 # vncpasswd 5. 配置文件 # vi /etc/s…

【图像处理】——图像灰度直方图的绘制(直接调用函数和自定义函数)

目录 一、灰度直方图概念 二、直接调用opencv的函数caclHist() 1、函数介绍 2、实例 <

Codeforces 722C. Destroying Array

C. Destroying Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array consisting of n non-negative integers a1, a2, ..., an. You are going to destroy integers in the array one by o…