大致介绍

终于结束了考试,放假回家了。这次的别踩白块儿网页版要比之前做的 jQuery编写网页版2048小游戏 要简单一点,基本的思路都差不多。

这篇博客并不是详细的讲解,只是大致介绍函数的作用,其中实现的细节注释中有解释,网上的这个源码有点乱,如果想看比较整齐的源码或者视频的可以QQ联系我(免费)(找共同学习的伙伴)

思路

这个小游戏可以抽象化分为3层

◆最底下的一层是基本的样式(可见的)

◆中间的层是最主要的,是一个4x3的二维数组,游戏中我们都是对这个二维数组进行操作(不可见的)

◆最上面的一层也是一个4x3的二维数组,是用户能最终看见的

我们通过最底下的一层显示最基本的12个小方格,不同的颜色,每个格子对应的中间的层有不同的值,最上面的一层负责显示样式

基本结构与样式

基本的结构和样式都挺简单,直接看代码

结构:

别踩白块儿

0.0000

样式:

body{

background-color: #008694;

font: 12px/20px "黑体" ,arial;

}

#header {

display: block;

margin: 0 auto;

width: 500px;

text-align: center;

}

#header h1 {

font-family: Arial;

font-size: 40px;

font-weight: bold;

}

#timer {

z-index: 4;

font-size: 24px;

color: #fa3c3c;

font-weight: 700;

text-shadow: 2px 2px 3px rgba(0, 0, 0, .3)

}

#container{

width: 302px;

height: 402px;

margin: 50px auto;

background-color: #55d769;

border: 5px solid #000;

position: relative;

}

.grid {

width: 100px;

height: 100px;

background-color: #fff;

border: 1px solid #000;

position: absolute;

}

.block {

width: 100px;

height: 100px;

border: 1px solid #000;

font-family: Arial;

font-weight: bold;

font-size: 20px;

color: #fff;

text-align: center;

position: absolute;

}

.coBlock{

background-color: #000;

}

.gameover {

display: block;

margin: 0 auto;

width: 300px;

text-align: center;

vertical-align: middle;

position: absolute;

}

.gameover p {

font-family: Arial;

font-size: 50px;

color: white;

margin: 50px auto;

margin-top: 150px;

}

.gameover span {

font-family: Arial;

font-size: 50px;

color: white;

margin: 50px auto;

}

.restartGame {

display: block;

margin: 20px auto;

width: 180px;

padding: 10px 10px;

background-color: #8f7a66;

font-family: Arial;

font-size: 30px;

color: white;

border-radius: 10px;

text-decoration: none;

}

.restartGame:hover {

background-color: #9f8b77;

}

这里并没有设置每个格子的位置,位置由js代码来设置,以及第二层的二维数组、第三层的显示层都由js来设置,这里和 jQuery编写网页版2048小游戏并没有什么大的区别

代码:

function init(){

timerRan = 0.000;

keyDown = true;

for(var i=0;i<4;i++){

board[i] = [];

for(var j=0;j<3;j++){

board[i][j] = [];

var grid = $('#grid-'+ i +'-'+ j);

grid.css({

'top':getPosTop(i,j),

'left':getPosLeft(i,j)

});

$('#container').append('

var block = $('#block-'+ i +'-'+ j);

block.css({

'top':getPosTop(i,j),

'left':getPosLeft(i,j)

});

board[i][j] = 0;

}

}

function getPosTop(i,j){

return i*100;

}

function getPosLeft(i,j){

return j*100;

}

初始化

游戏开始时,要在每一行随机的位置显示一个黑色的方块,并且在最下面的那一行的黑色方块上要有提示信息

代码:

for(var i=0;i<4;i++){

var randj = parseInt(Math.floor(Math.random() * 3));

if(i >0 && board[i-1][randj] == 1){

randj = parseInt(Math.floor(Math.random() * 3));

}

$('#block-'+ i +'-'+ randj).addClass('coBlock');

board[i][randj] = 1;

}

$('#block-3-0').text('按J开始游戏');

$('#block-3-1').text('按K开始游戏');

$('#block-3-2').text('按L开始游戏');

基本操作

我们通过switch循环,来根据用户不同的输入进行不同的操作

代码:

$(document).keydown(function(event) {

switch(event.keyCode){

case 74:

if(board[3][0] == 1 && keyDown){

timeRan();

clearText();

moveDown();

}else{

isgameover();

}

break;

case 75:

if(board[3][1] == 1 && keyDown){

timeRan();

clearText();

moveDown();

}else{

isgameover();

}

break;

case 76:

if(board[3][2] == 1 && keyDown){

timeRan();

clearText();

moveDown();

}else{

isgameover();

}

break;

}

});

在这里设置 keyDown 这个全局变量的目的是为了防止用户在游戏结束时,继续按键。

timeRan()这个函数是显示游戏时间的

代码:

function timeRan(){

clearTimeout(timer);

timerRan += 0.001;

$('#timer').text(timerRan.toString().slice(0,5));

timer = setTimeout(function(){

timeRan();

},1);

}

clearText()这个函数是在游戏开始后,将最下面一行的提示信息去掉

代码:

function clearText(){

$("#block-3-0").text("");

$("#block-3-1").text("");

$("#block-3-2").text("");

}

moveDown()这个函数是方块移动的最主要函数,因为方块要向下移动,所以我们要从最下面开始遍历二维数组,如果该格子是黑色的并且是最下面一行的,就只是简单的把该格子的颜色变回白色,如果该格子是黑色的并且是第一行至第三行的,这个格子变为白色,并且它的正下方的一个格子变为黑色,最后,在第一行的随机位置上显示一个黑色的格子

代码:

function moveDown(){

for(var i=3;i>=0;i--){

for(var j=2;j>=0;j--){

if(board[i][j] == 1){

if(i == 3){

$('#block-'+ i +'-'+ j).removeClass('coBlock');

board[i][j] = 0;

}else{

$('#block-'+ i +'-'+ j).removeClass('coBlock');

board[i][j] = 0;

$('#block-'+ (i+1) +'-'+ j).addClass('coBlock');

board[i+1][j] = 1;

}

}

}

}

var randj = parseInt(Math.floor(Math.random() * 3));

$('#block-0-'+ randj).addClass('coBlock');

board[0][randj] = 1;

}

isgameover()是显示游戏结束样式的函数,比较简单

代码:

function isgameover(){

keyDown = false;

clearTimeout(timer);

$('#container').append('

本次用时

'+ timerRan.toString().slice(0,5) +'重新开始

');

var gameover = $("#gameover");

gameover.css("width", "300px");

gameover.css("height", "400px");

gameover.css("background-color", "rgba(0, 0, 0, 0.5)");

}

function restartGame(){

$('#timer').text('0.000');

$('#gameover').remove();

$('.block').remove();

init();

}

总结

这个小游戏,如果学会了之前的 jQuery编写网页版2048小游戏,就会觉得这个挺简单的,基本的思想和方法都大同小异,如果有任何的建议如果或者想看比较整齐的源码或者视频的可以QQ联系我(免费)(找共同学习的伙伴)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

java实现别踩白块儿,jQuery实现别踩白块儿网页版小游戏相关推荐

  1. 基于jQuery仿QQ音乐播放器网页版代码

    基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div class=" ...

  2. java永远的冒险岛珍藏版_求些像冒险岛那样的横版单机游戏

    方法如下: 第一步:卸载Java虚拟机组件 以卸载Windows XP中已安装的MSJVM虚拟机为例.点击"开始→运行",在运行对话框中输入"RunDll32 advpa ...

  3. javascript小游戏_javaScript小游戏——网页版别踩白块

    一 项目简介 主要知识点:JavaScript.HTML.CSS 这是一个主要用JS实现的网页版小游戏,游戏规则很简单,通过点击不断下落的黑块来消灭它并获取分数,如果不幸黑块掉落下来或点到了白色区域那 ...

  4. jQuery实现别踩白块小游戏(简易版)

    别踩白块分享 这是个漫长的寒假,编程使我快乐.在学习jQuery时,在家练习做了这个小游戏,也算是提升一下实际使用能力. 现在记录下来给大家参考,不足之处请大家谅解. 先上截图: 使用代码前请先导入j ...

  5. 使用jquery—Canvas实现html5小游戏——《坦克大战》

    目录 1.项目背景 2.项目展示 3.设计思路 3.1.坦克移动 3.2.坦克开火 3.3.击中坦克 4.实现代码 5.总结 1.项目背景 2021年春节期间在家无聊,正好又学过一些前端的知识,因此就 ...

  6. 微信群控系统制作系列一——java模拟登录网页版微信

    PS:很多人咨询我怎么做手机群控系统,因此我开了个制作群控系统的系列,准备分五期讲解群控系统的制作.前两篇是基础内容. 今天做个简单的java模拟登录网页版微信. 既然要做模拟登录,那么我们一定要了解 ...

  7. 谷歌浏览器访问抖音网页版白屏

    谷歌浏览器访问抖音网页版白屏 前言 解决 前言 习惯谷歌浏览器刷刷网页版抖音,最近突然作了限制除了首页都是白屏,更换浏览器正常访问. 解决 分析请求发现user-agent的型号被拦截了. 安装Mod ...

  8. JAVA练习题17:文字版格斗游戏

    文字版格斗游戏 1. 规则:格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定任务的时候(new对象的时候),这些信息就应该被确定下来 2. 举例: 姓名为:乔峰 姓名为:鸠摩智 血量为:100 血 ...

  9. c语言猜拳游戏实训报告,Java猜拳小游戏程序设计实验报告.doc

    Java程序设计实验报告 班级: 学号: 姓名: 实验题目:猜拳小游戏 实验要求: 用java编写一个人机对战的猜拳小游戏.人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况.有简单的操作界面. 实验 ...

  10. java版哆啦a梦游戏_GitHub - wwz223/adventures-doraemon: 基于java实现的窗口类小游戏哆啦A梦历险记...

    基于java的哆啦a梦历险记 运行方式:打开dn.five.Test包,运行GameBoard.java即可 操作方式:空格代表开始或者暂停,键盘上下左右控制哆啦A梦移动 该项目诞生于一次java学习 ...

最新文章

  1. sklearn使用投票回归VotingRegressor算法构建多模型融合的投票回归模型、并自定义子回归器的权重(weights)、评估多模型融合的回归模型、评估R2、mse、rmse、mape
  2. 【建站系列教程】2、数据源
  3. 邮箱解决任务间资源共享问题
  4. vba 数值转文本_数值转文本,TEXT函数神操作
  5. 训练好的神经网络 如何预测_显存不够,如何训练大型神经网络?
  6. App 不想被“点名”,mPaaS 隐私合规检测为开发者护航数字生态建设
  7. Java获取上一周、上一个月、上一年的时间
  8. CV_MAT_ELEM——获取矩阵元素和初始化矩阵
  9. H3C认证路由交换网络高级工程师
  10. 基于QT4.8.3的手机操作系统,已完成QML语言的加入
  11. ASP.NET第三方控件网站
  12. HTC扣动板机出现射线。获得射线与VR中物体的交点并用linerender表示出来
  13. java中使用阻塞队列实现生产这与消费这之间的关系
  14. 电脑电池怎么测试软件,笔记本电池检测软件,小编教你笔记本电池怎么检测
  15. arcgis中python计算面积的表达式_ArcGIS应用——四种计算图斑面积的方法
  16. MATLAB —— 绘制频谱图
  17. android 动漫头像,动漫卡通头像制作
  18. 2016苹果开发者账号注册申请流程链接
  19. 2019第十一周作业
  20. python调用百度AI----文字识别

热门文章

  1. 空气质量指数范围对应的类型有哪些?
  2. 如何撰写一篇研究论文的介绍(introduction)
  3. mysql人物画像_用户画像智能匹配,用户画像的算法有哪些?
  4. SAP中一次性客户及供应商的应用浅晰
  5. 郑州计算机安全协会安全员考试成绩,安全员C证考试结果查询
  6. java stack长度_Java Stack size()用法及代码示例
  7. 解析几何:第六章 二次曲面(1)球面 椭球面 双曲面
  8. 什么是变量?变量的本质是什么?变量的生命周期和作用域
  9. 暗影精灵4如何调节风扇转速_惠普暗影精灵4 简单几步设置让游戏画面更流畅
  10. python脚本 游戏赚金币_Python实现王者荣耀刷金币脚本功能