这篇文章主要介绍了JavaScript基于面向对象实现的猜拳游戏,结合完整实例形式分析了javascript基于面向对象实现猜拳游戏的具体页面布局、样式及功能相关操作技巧,需要的朋友可以参考下

本文实例讲述了JavaScript基于面向对象实现的猜拳游戏。分享给大家供大家参考,具体如下:

html代码:

猜拳游戏

  • 我:name

  • 电脑:name

开始

请开始游戏...

  • 石头

  • 剪刀

css样式(字体:迷你简卡通)*{

margin:0px;

padding:0px;

font-family:'迷你简卡通';

font-size:28px;

}

html,body{

width:100%;

height:100%;

background:rgba(244, 184, 202, 1);

}

ul{

list-style:none;

}

#game{

width:800px;

height:600px;

margin:auto;

top:20%;

}

#game ul{

width:100%;

height:415px;

}

#game ul li{

width:50%;

height:100%;

float:left;

text-align:center;

}

#game ul li .anim{

width:223px;

height:337px;

border:10px solid #ff6699;

border-radius:50%;

margin:20px auto 0;

background-position:center;

background-repeat:no-repeat;

}

.user{

background:url('../img/readyl.png');

}

.comp{

background:url('../img/readyr.png');

}

#game .op{

width:100%;

text-align:center;

}

#game .op button{

width:200px;

height:60px;

border:10px solid #ff6699;

background:rgb(253, 217, 227);

border-radius:50%;

outline:none;

cursor:pointer;

font-weight:bold;

}

#game .op button:hover{

border-color:#ff0000;

background-color:#ff0000;

font-size:36px;

color:rgb(253, 217, 227);

}

#game .op button.disabled{

border-color:#bbb;

color:#bbb;

background-color:#ccc;

font-size:28px;

cursor:default;

}

#game .guess{

width:220px;

height:100%;

position:fixed;

top:0px;

left:0px;

display:none;

}

#game ul.guess li{

width:100%;

height:32%;

}

#game ul.guess li p{

width:100%;

height:90%;

border:10px solid #ff6699;

border-radius:50%;

background-position:center;

background-repeat:no-repeat;

cursor:pointer;

background-color:rgba(244, 184, 202, 1);

}

#game ul.guess li p:hover{

background-color:#ff6699;

color:#fff;

}

p.guess0{

background-image:url('../img/0.png');

}

p.guess1{

background-image:url('../img/1.png');

}

p.guess2{

background-image:url('../img/2.png');

}

#game p.text{

margin-top:20px;

text-align:center;

font-size:50px;

font-weight:bold;

}

js代码Function.prototype.extend = function( fn ){

for( var attr in fn.prototype ){

this.prototype[attr] = fn.prototype[attr];

}

}

//父级构造函数用于继承,共有属性

function Caiquan( name ){

this.name = name;

this.point = 0;

}

//用于继承下面衍生,共有方法

Caiquan.prototype.guess = function(){}

//继承父,玩家的构造函数

function User( name ){

Caiquan.call(this,name);

}

User.extend( Caiquan );

User.prototype.guess = function( point ){

return this.point = point;

}

//电脑的构造函数

function Comp( name ){

Caiquan.call(this,name);

}

Comp.extend( Caiquan ) ;

//电脑的猜拳方法,随机

Comp.prototype.guess = function(){

return this.point = Math.floor( Math.random()*3 );

}

//裁判构造函数

function Game( u , c ){

this.text = document.getElementById('text');

this.btn = document.getElementById("play");

this.user = u;

this.comp = c;

this.classN =document.getElementsByClassName('name');

this.guess = document.getElementById("guess");

this.anim = document.getElementsByClassName("anim");

this.num = 0;

this.init();

this.tiemr = null;

}

Game.prototype.Caiquan = function(){

this.textValue( '请出拳...' );

this.BtnDisable();

this.start();

this.guess.style.display = 'block';

}

//怎么玩

Game.prototype.start = function(){

var This = this;

this.timer = setInterval(function(){

This.anim[0].className = 'anim user guess' +( ( This.num ++ ) % 3 );

This.anim[1].className = 'anim comp guess' + ( ( This.num ++ ) % 3 ) ;

},500)

}

//初始化名字

Game.prototype.init = function(){

this.classN[0].innerHTML = '我:' + this.user.name;

this.classN[1].innerHTML = '电脑:' + this.comp.name;

}

//提示面板区域的修改

Game.prototype.textValue = function( val ){

this.text.innerHTML = val;

}

//按钮失效

Game.prototype.BtnDisable = function(){

if( this.btn.disabled ){

this.btn.disabled = false;

this.btn.className ='';

this.btn.innerHTML = '再来一次'

}else{

this.btn.disabled = true;

this.btn.className ='disabled';

}

}

Game.prototype.verdict = function( point ){

clearInterval(this.timer);

var userGu = user.guess(point);

var compGu = comp.guess();

this.anim[0].className = 'anim user guess' + userGu;

this.anim[1].className = 'anim comp guess' + compGu;

var res = userGu - compGu;

switch (res){

case 0:

this.textValue('平局!!!')

break;

case 1:

case -2:

this.textValue('lose~~~');

break;

case 2:

case -1:

this.textValue('win!!!')

break;

}

this.guess.style.display = 'none';

this.BtnDisable();

}

var user = new User( '锐雯' );

var comp = new Comp( '拉克丝' );

var game = new Game( user , comp );

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

猜拳php代码,使用JavaScript如何实现猜拳游戏(详细教程)相关推荐

  1. javascript网页二次元3D小人详细教程

    一.科班直接复制以下代码到vscode打开网页即可(小白请往下看教程) 二.小白详细教程(没有代码编译软件一样能做出来看到效果) 三.视频展示 一.科班直接复制以下代码到vscode打开网页即可(小白 ...

  2. 280行代码:Javascript 写的2048游戏

    2048 原作者就是用Js写的,一直想尝试,但久久未动手. 昨天教学生学习JS代码.不妨就做个有趣的游戏好了.2048这么火,是一个不错的选择. 思路: 1. 数组 ,2维数组4x4 2. 移动算法, ...

  3. 零基础代码学python-零基础学Python 超详细教程

    01.第一章:Python介绍和安装 01.Python语言的特点 02.Python的发展历史与版本 03.Python的安装 02.第二章:Python基础语法 04.Python程序的书写规则 ...

  4. python血条游戏代码_手把手Python和pygame游戏开发教程(二)

    欢迎,来自IP地址为:114.99.15.226 的朋友 前面教程第一部分已经成了小兔子的正确移动和转向,现在需要给它添加更多的动作以进行游戏的进一步开发. 让小兔子可以射箭 你的小兔子可以正确移动后 ...

  5. C#代码与javaScript函数的相互调用

    C#代码与javaScript函数的相互调用 问: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4 ...

  6. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  7. .net中C#代码与javaScript函数的相互调用问题

    .net中C#代码与javaScript函数的相互调用问题. 问: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript ...

  8. 如何通过Chrome中的代码设置JavaScript断点?

    我想强制Chrome调试器通过代码或使用某种注释标签(例如console.break()在一行上中断. #1楼 您可以使用debugger; 在您的代码中. 如果开发者控制台已打开,则执行将中断. 它 ...

  9. Web前端:JavaScript最强总结 附详细代码 (带常用案例!)

    Web前端基础: Web前端:HTML最强总结 附详细代码 Web前端:CSS最强总结 附详细代码 Web前端:JavaScript最强总结 附详细代码 Web前端工具: Web前端: JQuery最 ...

  10. android调用js接口,Android代码和JavaScript互相调用

    WebView加载一个使用JavaScript的网页,并且要实现相互之间的调用,需要启用WebView对JavaScript的支持,一旦启用之后你就可以通过接口来实现本地代码和JavaScript代码 ...

最新文章

  1. 自己写一个最简单的bootloader_jz2440
  2. BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值
  3. Bootstrap系列 -- 34. 按钮下拉菜单
  4. 编写 matlab怎么调用 8 点和 16 点的 fft,8点基于DIT的FFT的实现
  5. 【坐在马桶上看算法】算法4:队列——解密QQ号
  6. Turtlebot3调试必看——爬坑笔记
  7. 简述linux内核中,Linux内核中的文件描述符(一)——基础知识简介
  8. [批处理]NetstatFilter快速查找端口被占用问题
  9. 将字符串转为16进制数_Python 如何将字符串转为字典
  10. java怎么限制一个对象的内存_java对象的内存布局及创建过程
  11. 我的课程表--项目需求分析
  12. Error response from daemon: OCI runtime exec failed: exec failed: container_linux.go:345:
  13. 计算apk包的安装之后占用空间以及运行时占用内存
  14. Storage LUN connected on Emulex / Qlogica HBA not detecting during boot time.
  15. vs禁用函数安全检查
  16. 高通MSM8909:LCD hx8394d驱动调试
  17. 怎么更改电脑桌面文件存放路径
  18. 【C/C++进阶】输入的技巧
  19. 爱聊语音聊天室为什么用不了摄像头?
  20. 【硬件驱动】360驱动大师 v2.0.0.1660单文件网卡绿化版

热门文章

  1. 注塑机摆放间距多少合适_注塑模具加工须知(1):必须注意注塑机注塑参数“拉杆间距”...
  2. 三大微分中值定理及泰勒中值定理证明
  3. php 开源系统(cms),30个很棒的PHP开源CMS内容管理系统
  4. 深入理解 ZK 中的 “大多数” 机制
  5. 题目 1548: 盾神与砝码称重
  6. 脱壳进阶篇——IAT修复与解密
  7. 计算机实现两个数相加的过程,嵌入式FORTH虚拟计算机的实现
  8. oracle数据库外联,Oracle数据库-关于外联接
  9. 信息与计算机科学学校排名,2021中国信息与计算科学专业大学排名 最好的高校排行榜...
  10. scheme 中文教程