随机移动的小方块

前段时间在问答里面看到一个问题,一个方块在每次上下左右移动一步的情况下,经过n步移动到终点。
试着写了一个

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
body{
margin:0;
padding:0;
}
#box{
position:absolute;
left:0;
top:0;
width:30px;
height:30px;
background-color:#f00;
}
.contaier{
width:210px;
height:210px;
border-right:1px solid #333;
border-bottom:1px solid #333;
padding:0;
margin:0;
} .contaier dd{
width:29px;
height:29px;
border-top:1px solid #333;
border-left:1px solid #333;
float:left;
margin:0;
}
.step{
margin-top:10px;
}
#step{
width:50px;
}
</style>
</head>
<body>

<dl class="contaier">
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
<dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd><dd></dd>
</dl>
<div class="step">
请输入步骤:<input type="text" id="step" /><input type="button" value="go" id="start" />
</div>

<div id="box"></div>
<p>红色方块经过n步后,移动到最后一格</p>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('mootools','1.2.1');
</script>
<script type="text/javascript">
var Box = function(id,n,temp){
this.id = id;
this.n = n.toInt();
this.temp = temp;
}
Box.prototype.randomTemp = function(){
if (!this.n) {
return alert('请填写步骤数')
}
if(this.n<this.temp*2){
return alert(this.n+'小于最少步骤数,请填写大一点 的数字')
}
var n = this.n;
var temp = this.temp;
var x=[];
var y=[];
var s={
'x':[],
'y':[],
}
x[n-1]=null;

//x,y前半段,和=temp;
(temp*2).times(function(i){
if(i<temp){
x[i]=1;
y[i]=0;
}else{
x[i]=0;
y[i]=1;
}
});

//x,y的后半段,后半段和=0;
var i = temp*2;
var l = n;
if(l-i == 0){return s;}
while(i<l){
if(i+1 == l){
x[i]=0;
y[i]=0;
return s;
}
x[i] = $random(1,4);
x[i] = x[i] == 3 ? -1 : x[i] ==2 ? 0 : x[i]==1 ? 0 : 1;
y[i] = x[i] == 0 ? -1 : 0;
x[i+1] = 0-x[i];
y[i+1] = 0-y[i];
i = i+2;
}

//对x,y两个数组进行随机排序 , 且满足:
// 0 <= x[0]+x[1] + ... + x[n] <= temp;
// 0 <= y[0]+y[1] + ... + y[n] <= temp;
var p=0;
var h={
x:0,
y:0
};
(n).times(function(i){
if(l==0){return;}
p= $random(1,l) -1;
h.x = h.x + x[p];
h.y = h.y + y[p];
while( h.x<0 || h.x>temp || h.y<0 || h.y>temp){
h.x = h.x -x[p];
h.y = h.y -y[p];
p= $random(1,l) -1;
h.x = h.x + x[p];
h.y = h.y + y[p];
}
s.x[i] = x[p];
s.y[i] = y[p];
x.splice(p,1);
y.splice(p,1);
l--;
});
return s;
};
Box.prototype.move = function(){
if(!$(this.id)){
return
}
var that = this;
var id = $(this.id);
this.left = 0;
this.top = 0;
var i=0;
var s = this.randomTemp();
this.m = new Fx.Morph(id,{
link:'chain',
onComplete:function(){
i++;
if(i==s.x.length){return}
return that.go(s.x[i],s.y[i]);
}
});
return this.go(s.x[i],s.y[i]);
}
Box.prototype.go = function(x,y){
this.left += x*30;
this.top += y*30;
return this.m.start({
'left':this.left,
'top':this.top
})
}

window.addEvent('domready',function(){


var div_x = new Element('p');
var div_y = new Element('p');

$('start').addEvent('click',function(e){
e.stop();

var n = $('step').value;
if (!n) {
return alert('请填写步骤数')
}
if(n<6*2){
return alert(n+'小于最少步骤数,请填写大一点 的数字')
}

var b = new Box('box',n.toInt(), 6);
b.move();



//x,y两个数组值
div_x.set('text','x= '+ b.randomTemp().x);
div_y.set('text','y= '+b.randomTemp().y);
$$('body')[0].adopt(div_x, div_y);
})



})
</script>
</body>
</html>

JS写的一个方块移动游戏 NULL 博文链接:https://zjixuanlv.iteye.com/blog/1159829 立即下载

相关推荐

小红书x-mini签名逆向实战:Frida动态Hook与算法还原

在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位

weixin_31264565的博客 457

小案例-方块在浏览器页面随意移动

布局部分 <div id="box"></div> 样式部分 *{ margin: 0; padding: 0; font-family: "Microsoft Yahei"; } #box{ position: absolute; left: 100px; top: 100px;

qq_44681872的博客 382

在没有信用卡的情况下怎么申请谷歌云(Google Cloud)?

这笔额度足够用来跑一台云服务器、部署小型网站,甚至可以尝试 AI、机器学习等项目。但问题来了——想要拿到这 300 美元,你必须先通过支付方式验证。默认选项就是绑定一张国际信用卡(Visa、MasterCard 之类),然而不少人没有信用卡,或者信用卡无法支持国际支付,结果就卡在注册第一步。很多人会疑惑:既然是送额度,为什么还要绑卡?原因其实很简单:谷歌需要确认你是真实用户,而不是批量注册薅羊毛;通过支付验证,后续如果你用完 300 美元额度,可以直接进行付费使用;

m0_74824483的博客 5651

JavaScript学习笔记26

五、事件处理模型 — 事件冒泡、捕获 事件处理的两个模型:事件冒泡、捕获(不能同时存在) 只点了黄色区域,但是出现了 box,content,wrapper,往下漏了,就是事件冒泡 1、事件冒泡: 结构上(非视觉上)嵌套关系的元素,会存在事件冒泡的功能,即同一事件,自子元素冒泡向父元素。(自底向上) 结构上存在父子关系的元素,如果点击到子元素,会一级级向父元素传递这个事件(从代码的角度是自底向上一层层冒泡的) 例:加了 margin,只点黄色的,还是出现了 box,content,wrap

学习记录 728

告别Keil,在Windows上用VSCode + arm-none-eabi-gcc + Makefile搭建国产MCU开发环境(附JLink配置避坑)

本文详细介绍了如何在Windows上使用VSCode、arm-none-eabi-gcc和Makefile搭建国产MCU开发环境,替代传统的Keil和IAR。内容涵盖工具链配置、工程结构设计、Makefile编写、VSCode集成调试以及高效开发工作流,特别针对国产MCU如复旦微FM33系列提供了优化方案和避坑指南。

weixin_28729205的博客 431

硬件电路(22)-TTL和232切换电路

工作中会遇到TTL和232电平的通信的状态,为了实现一种便捷的切换方式,参考了一些文章,提供一种电路方便大家使用。

剑藏锋的博客 1861

JS动画随机移动效果和键盘控制移动效果

多个对象进行移动时使用onclick=("this")来获取当前点击对象,下面通过obj来获得参数,并根据offsetTop和offsetLeft获取对象当前的坐标值。然后根据活动区域生成一个随机数,由于活动区域的长为1200,所以生成随机数0-1200,作为移动到边界的横坐标值。根据document.onkeydown获取键盘输入,并根据keyCode识别键盘输入的数据,从而实现板的移动。当小球移动到边界时进行反转,从而实现镜像移动。

m0_47673203的博客 389

高速PCB设计中串扰的成因、影响与实战控制策略

在高速数字电路与硬件系统设计中,信号完整性是确保系统稳定可靠的核心基础。其核心原理在于,当信号在传输线上传播时,会伴随产生电场与磁场,若相邻导线距离过近,便会通过电磁场耦合产生不期望的能量转移,即串扰。这一现象会直接导致信号波形畸变、时序偏移和噪声裕量降低,严重影响系统性能。从技术价值看,深入理解并有效控制串扰,是提升数据传输速率、保障系统稳定性和降低误码率的关键。其应用场景广泛覆盖了从高速SerDes链路、DDR内存接口到高精度模拟电路等几乎所有现代电子系统。本文聚焦于高速PCB设计中的串扰问题,系统剖析

weixin_27625589的博客 574

【具有路由 WSN 模拟器的随机方式移动】具有路由 WSN 模拟器的随机方式移动(Matlab代码实现)

这种随机的节点移动模拟了真实世界中节点的行为,因为无线传感器网络中的节点通常不会按照固定的轨迹移动。最后,我们评估了我们提出的方法的效果和性能。我们通过比较在使用我们的方法时的数据传输延迟、能耗和网络吞吐量等指标与使用其他方法时的指标,来评估我们的方法的优劣。通过这些工作步骤,我们能够更好地理解路由 WSN 模拟器的随机方式移动,并评估其在无线传感器网络中的应用效果和性能。我们的研究对于改进无线传感器网络的路由策略和性能优化具有重要意义,并可以为实际网络部署提供有价值的参考。行百里者,半于九十。

weixin_67304359的博客 136

手把手移植st7701s驱动:MT6763+安卓8.0屏幕适配保姆级教程

本文详细介绍了在MT6763平台上移植ST7701S驱动的完整流程,涵盖从LK层到Kernel层的适配方案,特别针对安卓8.0系统的特殊要求。通过MIPI转RGB屏幕适配的实战教程,帮助开发者解决常见显示问题,包括无显示、色彩异常和屏幕错位等,并提供高级调试技巧如彩条测试模式和闪屏解决方案。

weixin_29186249的博客 156

Joule 终于会说 ABAP 了:从 ADT 提效到 ABAP AI SDK + ISLM 自建企业级 AI 场景的落地路线

生成结构化摘要(故障现象、初步原因、处理动作、备件消耗)自动给出建议分类(电气、机械、软件、网络)把摘要回写到工单抬头,方便后续统计与知识沉淀如果你用 CAP 来做这类服务,通常会在 Node.js 层封装一个对 AI Hub 的调用,再通过 OData 或 Event 把结果写回 SAP。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 342

unity中 物体在屏幕内随机移动

Movement();//移动。

u011146831的博客 1139

华为OD机考双机位C卷 - 区间交集(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 区间交集

算法大师! 1136

超陋的小方块移动小游戏(鼠标触碰小方块,小方块会沿其他三个方向逃避鼠标的触碰)

超陋的代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>实现小方块随机移动小游戏</title> <style> *{

weixin_46102597的博客 2098

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

javascript实现随机小方块小案例(原型)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .map{ width:800px; height:600px; background-color:#ccc; po

代码在路上的博客 664

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

在当前显示区范围内实现点不到的小方块

在当前显示区范围内实现点不到的小方块 div{position:fixed;width:50px;height:50px; background-color:pink; } js: var game={ SIZE:0,//保存pop小div的大小 MAXTOP:0,//小pop可用的最大top值: innerHeight-SIZE-30

java_zhaoyanli的专栏 451

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JS-鼠标彩色拖尾小效果

实现步骤解析: * 这原本就是一个鼠标后面跟随一串小方块的效果, * 后来我就想,运用之前学的随机数的案例把小方块的颜色做成彩色的, * 并且每一个小方块的色彩是随机分配而不是我自己手动填写的。 1 function getColor(){ 2 var oMath = Math.floor(Math.random()*255);...

xing.org1^ 401

JavaScript实现鼠标移动特效

【代码】JavaScript实现鼠标移动特效。

shan33__的博客 913

html+css+javascript实现小游戏2048(详解,附源代码)

html+css+javascript实现小游戏2048(详解,附源代码) 上下左右的移动原理相同,这里只详细说明向上移动的方法 这里的上下左右由wasd四个键控制 html部分 先创建好2048的一个静态布局 zuiwaibian:一个大的框框,整体的游戏界面。 caidan:用于显示当前得分的区域。 a1,a2,a3,a4:是第一行的小方块。 b1,b2,b3,b4:是第二行的小方块。 c1,c2,c3,c4:是第三行的小方块。 d1,d2,d3,d4:是第四行的小方块。 <div id="zui

baiqi123456的博客 7955

JavaScript-永远点不到的小窗口

1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>在当前显示区范围内实现点不到的小方块</title> 6 <style> 7 div{position:...

weixin_34292287的博客 197

俄罗斯方块游戏制作

g.drawString("分数: " + totalScore, 500, 250);JFrame jFrame = new JFrame("俄罗斯方块");//判断当前游戏状态。//判断是否有小方块。//绘制下一个将要下落的四方格。//当前四方格下落一格。//分数池获取分数,累加到总分。//初始化两种状态的相对坐标。//初始化两种状态的相对坐标。//初始化两种状态的相对坐标。//游戏三种状态 游戏中、暂停、结束。//判断是否到达底部。//存储四方格各元素的位置。//绘制正在下落的四方格。

qq_73086324的博客 131

制作单机俄罗斯方块游戏心得(二)

前面说的是创建了Piece0, Piece1,Piece2,Piece3,Piece4,Piece5,Piece6.其中变化的方块,由于游戏开始和下一个方块出现时是随机得到不同的大方块的,在定义Piece时用changes属性(Protectec  List> changes = new ArrayList>())来储存变化的方块,所以要想随机的到一个方块,在Piece提供了一个geDefault

菜鸟博客 3046

滑动拼图小游戏(C语言)

之前在看到一个Java写的滑动拼图的小游戏,然后那个运行后的界面是用了图形化输出,然后我想用C语言可不可以简化一下实现游戏的效果,本来移动是一张打乱的图片,我就直接简化成数字输出,于是我就写了下面的代码,希望各位大佬能帮我看一下哪些地方有问题,哪些地方没有考虑全面。首先我是对游戏分了下面几个点要实现。

充满焦虑的大学生 1234
上一篇: ie bug集合
下一篇: 动态加载js文件,ie下的问题
dxtiger
博客等级 码龄22年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值