JavaScript实现的石头剪刀布游戏源码分享


Posted in Javascript onAugust 22, 2014

这个游戏主要设计到两点:

首先是胜负运算

由于石头剪刀布是循环性的
石头 杀 剪子
剪子 杀 布
布   杀  石头
石头  杀  剪子
。。。
根据以上特点找出规律,写出算法即可。

让电脑随机

这点比较容易,前面我有写过文章介绍,不明白的童鞋可以去看看。

随机刷屏

其实这个效果不是游戏的关键性,但为了看起来更加互动,好玩,我就给加上了。这里用到了一个取模算法,根据余数去循环显示即可达到效果。

界面截图

JavaScript实现的石头剪刀布游戏源码分享

最后上代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>JS写的石头剪子布游戏 - 琼台博客</title>
		<style type="text/css">
			div{margin:20px auto;padding:10px;border:2px solid #999;width:200px;background:#ffe;}
			div#cu{font-weight:bold;font-size:30px;height:40px;color:red;}
			div#la{border:none;background:none;display:none;}
			span{color:red;font-weight:bold;}
		</style>
		<script type="text/javascript">
			var se = null,time=20,you=0,arr=new Array('石头','抹布','剪子');
			function p(n){
				you = n;
				document.getElementById('you').innerHTML=s(n);
				document.getElementById('st').disabled=true;
				document.getElementById('mb').disabled=true;
				document.getElementById('jz').disabled=true;
				document.getElementById('cu').innerHTML = '...';
				se = setInterval('t()',50);
			}
			function agin(){
				document.getElementById('st').disabled=false;
				document.getElementById('mb').disabled=false;
				document.getElementById('jz').disabled=false;		
				document.getElementById('la').style.display = 'none';
				document.getElementById('you').innerHTML = '';		
				document.getElementById('pc').innerHTML = '';
				document.getElementById('cu').innerHTML = '';
				document.getElementById('you').innerHTML= '请选择';		
			}
			function bt(){
				var pc = Math.floor(Math.random() * 3 + 1);
				document.getElementById('pc').innerHTML = s(pc);
				var str='';
				if(pc==you){
					str += '平局';	
				}else{
					var b = pc-you;
					if(b>0){
						if(b==1){
							str += '电脑赢';	
						}else{
							str += '你赢啦';	
						}				
					}else{
						b = b*-1;	
						if(b==1){
							str += '你赢啦';	
						}else{
							str += '电脑赢';	
						}	
					}		
				}
				document.getElementById('la').style.display = 'block';
				document.getElementById('cu').innerHTML = str;
			}
			function t(){
				if(time>0){
					document.getElementById('pc').innerHTML = arr[time%3];
					time--;
				}else{
					clearInterval(se);
					se = null;
					time = 20;
					bt();
				}
			}
			function s(n){
				if(n==1){
					return '石头';	
				}else if(n==2){
					return '抹布';	
				}else{
					return '剪子';	
				}
			}
		</script>
	</head>
	<body>
		<div>
			<p>你出什么?<span id="you">请选择</span></p>
			<p><button id="st" onclick="p(1);">石头</button></p>
			<p><button id="mb" onclick="p(2);">抹布</button></p>
			<p><button id="jz" onclick="p(3);">剪子</button></p>
		</div>
		<div>
			<p>电脑出?</p>
			<span style="" id="pc"></span>
		</div>
		<div id="cu"></div>
		<div id="la"><button id="agin" onclick="agin()">再来一次</button></div>
	</body>
</html>
Javascript 相关文章推荐
jQuery使用手册之二 DOM操作
Mar 24 Javascript
document.documentElement &amp;&amp; document.documentElement.scrollTop
Dec 01 Javascript
基于json的jquery地区联动效果代码
Jul 06 Javascript
javascript中如何处理引号编码&amp;#034;
Aug 15 Javascript
js实现特定位取反原理及示例
Jun 30 Javascript
jQuery中noConflict()用法实例分析
Feb 08 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
小程序click-scroll组件设计
Jun 18 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 Javascript
一个很有趣3D球状标签云兼容IE8
Aug 22 #Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 #Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
Aug 22 #Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
Aug 22 #Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 #Javascript
IE浏览器IFrame对象内存不释放问题解决方法
Aug 22 #Javascript
js中实现多态采用和继承类似的方法
Aug 22 #Javascript
You might like
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python网络编程示例(客户端与服务端)
2014/04/24 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
解决Python一行输出不显示的问题
2018/12/03 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
如何学习Python time模块
2020/06/03 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
python中random模块详解
2021/03/01 Python
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
学期自我评价
2014/01/27 职场文书
教师演讲稿开场白
2014/08/25 职场文书
五一劳动节活动总结
2015/02/09 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python