修改单机版游戏代码,并对其进行逻辑处理和初始化

  • 更改单机版页面结构,实现用户进入后,单数用户显示需要等待另一个玩家,双数的客户进入后,可以开始游戏~
    • HTML中加入div
    • remote.js中绑定按钮事件
    • 创建wsServer.js文件
    • script.js中传入socket对象

更改单机版页面结构,实现用户进入后,单数用户显示需要等待另一个玩家,双数的客户进入后,可以开始游戏~

HTML中加入div

<div class="square" id="remote"><div class="title">对方的游戏区域:</div><div class="game" id="remote_game"></div><div class="next" id="remote_next"></div><div class="info"><div>已用时:<span id="remote_time">0</span>s</div><div>已得分:<span id="remote_score">0</span>分</div><div id="remote_gameover"></div></div><!-- 点击按钮来调用函数 --><button id="down">down</button><br><button id="left">left</button><br><button id="right">right</button><br><button id="rotate">rotate</button><br><button id="fall">fall</button><br><button id="fixed">fixed</button><br><button id="performNext">performNext</button><br><button id="check">check</button><br><button id="checkClear">checkClear</button><br><button id="checkGameOver">checkGameOver</button><br><button id="setTime">setTime</button><br><button id="addScore">addScore</button><br><button id="gameOver">gameOver</button><br><button id="addBotLine">addBotLine</button><br></div>

remote.js中绑定按钮事件

var Remote = function (socket) {var game;var bindEvents = function () {document.getElementById('left').onclick = function () {game.left();}document.getElementById('down').onclick = function () {game.down();}document.getElementById('right').onclick = function () {game.right();}document.getElementById('rotate').onclick = function () {game.rotate();}document.getElementById('fall').onclick = function () {game.fall();}document.getElementById('fixed').onclick = function () {game.fixed();}document.getElementById('performNext').onclick = function () {game.performNext(2, 2);}document.getElementById('checkGameOver').onclick = function () {game.checkGameOver();}document.getElementById('setTime').onclick = function () {game.setTime(20);}document.getElementById('addScore').onclick = function () {game.addScore(10);}document.getElementById('gameOver').onclick = function () {game.gameOver(true);}document.getElementById('addBotLine').onclick = function () {game.addBotLine([[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]]);}}var start = function (type, dir) {var doms = {gameDiv: document.getElementById('remote_game'),nextDiv: document.getElementById('remote_next'),timeDiv: document.getElementById('remote_time'),scoreDiv: document.getElementById('remote_score'),resultDiv: document.getElementById('remote_gameover')}game = new Game();game.init(doms, type, dir);}//   导出this.start = start;this.bindEvents = bindEvents;
}

创建wsServer.js文件

var app = require('HTTP').createServer();
var io = require('socket.io')(app);var PORT = 3000;
// 客户端计数
var clientCount = 0;
// 保存客户端socket
var socketMap = {};
app.listen(PORT);
io.on('connection', function (socket) {// 用户连接进来后先进行客户加1clientCount++;socket.clientNum = clientCount;socketMap[clientCount] = socket;// 是单数个进来的用户需要等待if (clientCount % 2 == 1) {// 发送wait消息socket.emit('wait', 'waiting for another person');} else {socket.emit('start');socketMap[(clientCount - 1)].emit('start');}socket.on('disconnect', function () {});
});
console.log('websocket listening on port' + PORT);

script.js中传入socket对象

var socket = io('ws://localhost:3000');
// 创建local对象并调用,传入socket对象
var local = new Local(socket);
var remote = new Remote(socket);socket.on('waiting', function (str) {document.getElementById('waiting').innerHTML = str;
});

前端实现俄罗斯方块小游戏1(在单人版基础上,实现基于websocket的双人版游戏)相关推荐

  1. html5 websocket 游戏,基于Websocket的H5在线游戏对战平台

    基于Websocket的H5在线游戏对战平台 摘要 随着计算机的普及与互联网技术的发展,人们的生活方式发生了巨大的变化.基于B/S(Browser/Server)结构的系统不需要用户安装客户端软件,它 ...

  2. mfc做数独游戏_我终于在iPhone上找到了体验最好的数独游戏

    我已经被一个 9×9 的格子困住将近 30 分钟,它既让人深陷其中还欲罢不能. 玩<数独 2>这款 app 之前我是抗拒的,因为我对数字超级无感,但抱着朋友告诉我入门很简单后试一试的心态, ...

  3. 从零开始完整开发基于websocket的在线对弈游戏【五子棋】,只用几十行代码完成全部逻辑。

    五子棋是规则简单明了的策略型游戏,先形成五子连线者获胜. 本课程习作采用两人在线对弈的方式进行比赛,拿着手机在上下班路上玩特别合适. 整个过程在众触低代码应用平台进行,使用表达式描述游戏逻辑(高度简化 ...

  4. QT、linux驱动以及应用基础学习总结-基于IMX6ULL的翻金币游戏点灯以及蜂鸣器报警

    0 前言 代码链接:https://download.csdn.net/download/qq_55813245/85594338 资源 :imx6ull开发板 系统:正点原子出厂系统(Uboot 版 ...

  5. 前端实现双人联机版俄罗斯方块小游戏2(实现双人联机)

    基于websocket实现双人联机俄罗斯方块游戏,逻辑思路整理如下 思路整理 1.游戏开始,双方都收到start消息,同时调用start方法 2.start方法中,调用game.init方法,同时发送 ...

  6. 注入游戏没有焦点_《热血传奇怀旧版》即将登陆咪咕快游 盛趣游戏端游上云再落一子...

    盛趣游戏云游戏业务开始提速.日前,回归最经典版本的<热血传奇怀旧版>重聚测试开启,并将独家上架咪咕快游云游戏平台.这是盛趣游戏与中移动咪咕互娱共建的擎云工作室正式落地后,双方在云游戏又一实 ...

  7. 八十年代的计算机游戏,那些无法遗忘的记忆 八十年代最伟大的二十款游戏

    八十年代对游戏行业来说是复杂的十年,这个时段既有整个行业的几近崩溃,但因为科技的飞速发展和思维模式的更新,又有无法忽略的主机和游戏的发布,许多经典都是在这个年代诞生的,现在就让我们来看一看在这个传奇的 ...

  8. 做游戏,学编程(C语言) 2 最简单的飞机游戏

    这一次,在前面弹跳小球的基础上,实现一个简单的飞机游戏的雏形,主要包括:飞机显示.控制移动.发射子弹.击中敌机等功能.需要的语法基础知识和弹跳小球一样:printf.scanf.if-else.for ...

  9. Linux游戏市场,Tacoma上的Nixie Pixel以及更多开放游戏新闻

    您好,Linux游戏迷! 在本周的版本中,我们将了解Introversion Software对Linux游戏,Linux新游戏等的看法. 2015年7月12日至18日开放游戏摘要 Linux市场上的 ...

最新文章

  1. Spring3.x与jdk8兼容问题
  2. python的编译器有哪些-python编译器有哪些
  3. jupyter安装插件,以及远程访问服务器上的jupyter notebook
  4. 各种神经网络优化算法:从梯度下降到Adam方法
  5. dorado 刷新_dorado7常用内容
  6. 美国NIST仍在与财政部和国防部就区块链支付跟踪项目合作
  7. python显示shape为(224,224,64)的图像?plt.imshow
  8. jdy ble sdk android,JDY-18蓝牙模块 连接blinker超时
  9. jsmind 线条_使用jsMind显示思维导图
  10. 使用文本标签做一个简单的自我介绍
  11. Tech Blog by Eason!
  12. 文件 打包 及 生成Excel文件转PDF格式和Excsl文件格式一体数据
  13. 2015合肥市第 32 届青少年信息学(计算机)奥林匹克竞赛小学组试题
  14. MFC学习之 对话框设置背景颜色及控件透明的方法
  15. zypper in 安装下载不了_Color Wheel下载与Color Wheel如何配搭衣服颜色?
  16. [bzoj3238]差异
  17. (免费分享)基于springboot论坛bbs系统
  18. 你的“电动爹”,国庆又又又趴窝了吗
  19. c++操作Office之Word
  20. python爬电影的优点是_我用 Python 爬了点你们喜欢的电影,这些电影真的很不错!...

热门文章

  1. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day7-综合练习
  2. 除了Figma,再给你介绍10款好用的协同设计软件
  3. 爬取豆瓣《小丑》短评做词云图
  4. 2017年浙江中医药大学大学生程序设计竞赛-B:一生之敌(思维)
  5. matlab norm如何理解,MATLAB 中NORM运用
  6. 一个孤独而封闭世界――英语口语
  7. 修复打开或关闭Windows功能框显示空白问题的方法
  8. 【JZOJ 3806】小X 的道路修建
  9. 高光时刻 | “吴文俊人工智能科学技术奖”十周年颁奖盛典
  10. 有效市场假说理论(EMH)