JavaScript实现石头剪刀布游戏:核心算法与交互逻辑解析
作者:纸飞机时间:2026-10-28 13:34:14浏览:610
本文分享一个基于JavaScript实现的石头剪刀布小游戏源码。重点解析了利用循环特性构建的胜负判定算法、电脑随机出拳的实现方式,以及通过取模算法实现的随机刷屏动画效果。代码包含完整的HTML结构与JS逻辑,适合初学者学习基础游戏开发思路。
游戏核心逻辑概述
该游戏的设计主要包含两个核心部分:
胜负判定算法实现
首先是胜负关系的运算逻辑。
石头剪刀布的规则具有循环克制的特点:石头克制剪子,剪子克制布,布又克制石头,如此循环往复。基于这一规律,只需编写相应的条件判断算法即可实现胜负判定。
电脑随机出拳机制
其次是实现电脑随机出拳的功能。
这一功能相对简单,此前已有文章详细介绍过相关实现方法,如有不清楚之处可参考往期内容。
交互动画与视觉效果
最后是添加随机刷屏的视觉效果。
虽然该效果并非游戏的核心机制,但为了增强互动感和趣味性,特意加入了此功能。这里采用了取模算法,根据计算得到的余数来循环显示不同的出拳结果,从而达成动态刷屏的视觉体验。
以下是游戏界面的实际截图展示。

最后附上完整的源代码供参考。
<!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>
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
