欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實(shí)現(xiàn)網(wǎng)頁五子棋小游戲

 更新時(shí)間:2022年06月21日 12:38:01   作者:Cairo960918  
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)網(wǎng)頁五子棋小游戲的具體代碼,供大家參考,具體內(nèi)容如下

設(shè)計(jì)思路如下:

1.先采用的Math.random()方法決定哪一方先行;

2.設(shè)置變量WFLAG = 1,BFLAG = 0時(shí)執(zhí)白子,WFLAG = 0,BFLAG = 1時(shí)執(zhí)黑子;

3.設(shè)置標(biāo)志[I]中,當(dāng)為白子時(shí)標(biāo)志[I] = 1,當(dāng)為黑子時(shí)標(biāo)志[I] = 2,且標(biāo)志[I]不為0時(shí)不能落子;

4.設(shè)置判斷語句,當(dāng)列5子時(shí),豎5子,斜5子時(shí)為勝利,并計(jì)分;

5.重新開始 - 重新初始化變量。

采用的方法如下:

1. Math.random():隨機(jī)產(chǎn)生0~1的隨機(jī)數(shù),含0但不包括1;

2. window.addEventListener(type,“javascript語句”,false):監(jiān)聽器,三個(gè)參數(shù),第一個(gè)參數(shù)為所要監(jiān)聽的事件的類型(mousedown-鼠標(biāo)按下,keydown-鍵盤按下等事件),第二個(gè)參數(shù)為發(fā)生事件后所要執(zhí)行的JavaScript的語句,第三個(gè)參數(shù)可選,默認(rèn)為假;

<!doctype html>
<html>
<head>
<title>五子棋</title>
<meta charset="utf-8">
<style>
*{
?? ?padding:0;
?? ?margin:0;
?? ?}
#out{
?? ?width:610px;
?? ?height:610px;
?? ?border:5px solid;
?? ?position:absolute;
?? ?margin-left:300px;
?? ?margin-top:100px;
?? ?}
#play{
?? ?width:200px;
?? ?height:80px;
?? ?position:absolute;
?? ?margin-left:500px;
?? ?margin-top:0px;
?? ?}
#start{
?? ?width:100px;
?? ?height:45px;
?? ?border-radius:25px;
?? ?position:absolute;
?? ?margin-top:0px;
?? ?margin-left:50px;
?? ?font-size:20px;
?? ?background-color:#CCFF66;
?? ?}
span{
?? ?width:80px;
?? ?height:30px;
?? ?position:absolute;
?? ?margin-top:50px;
?? ?border:1px solid;
?? ?text-align:center;
?? ?}
.wq{
?? ?width:40px;
?? ?height:40px;
?? ?border-radius:40px;
?? ?background-color:#999999;
?? ?margin-left:7px;
?? ?margin-top:0px;
?? ?}
.bq{
?? ?width:40px;
?? ?height:40px;
?? ?border-radius:40px;
?? ?background-color:#000000;
?? ?margin-left:7px;
?? ?margin-top:0px;
?? ?}
table tr{
?? ?height:50px;
?? ?}
table tr td{
?? ?width:50px;
?? ?height:50px;
?? ?}
.block{
?? ?width:50px;
?? ?height:50px;
?? ?}
#history{
?? ?width:100px;
?? ?height:50px;
?? ?position:absolute;
?? ?margin-top:40px;
?? ?margin-left:720px;
?? ?}
#return{
?? ?width:100px;
?? ?height:50px;
?? ?background-color:#999900;
?? ?border-radius:26px;
?? ?font-size:17px;
?? ?font-family:"Lucida Console", "Lucida Sans Typewriter", Monaco, "Courier New", monospace;
?? ?font-style:oblique;
?? ?}
.tab{
?? ?width:100px;
?? ?height:151px;
?? ?position:absolute;
?? ?margin-top:120px;
?? ?}
.head{
?? ?width:100px;
?? ?height:50px;
?? ?position:absolute;
?? ?margin-top:0px;
?? ?}
.score{
?? ?width:100px;
?? ?height:100px;
?? ?position:absolute;
?? ?margin-top:51px;
?? ?}
.feshu{
?? ?width:50px;
?? ?height:100px;
?? ?position:absolute;
?? ?margin-top:0px;
?? ?}
img{
?? ?width:100%;
?? ?height:100%;
?? ?}
</style>
<script>
window.onload=function(){
?? ?var white=document.getElementById("white");
?? ?var black=document.getElementById("black");
?? ?var start=document.getElementById("start");
?? ?var out=document.getElementById("out");
?? ?var le1=0,le2=0,ri1=0,ri2=0;
?? ?var left1=document.getElementById("left1");
?? ?var left2=document.getElementById("left2");
?? ?var right1=document.getElementById("right1");
?? ?var right2=document.getElementById("right2");
?? ?var images=new Array("./images/s0.png","./images/s1.png","./images/s2.png","./images/s3.png","./images/s4.png","./images/s5.png","./images/s6.png","./images/s7.png","./images/s8.png","./images/s9.png");
function goal(le2,ri2){
?? ?left1.src=images[le1];
?? ?left2.src=images[le2];
?? ?right1.src=images[ri1];
?? ?right2.src=images[ri2];
}
?? ?for(m=0;m<100;m++){
?? ??? ?document.getElementsByTagName("td")[m].innerHTML='<div class="block" id="the'+m+'"></div>';
?? ??? ?}?? ??? ?
?? ?//flag=1,不能放棋子
?? ?var flag=new Array(100);
?? ?for(var j=0;j<100;j++){
?? ??? ?flag[j]=0;
?? ?}
?? ?//1-白子先行,2-黑子先行?? ?
?? ?var wflag=0,bflag=0,lflag=0;
?? ?var turn=Math.floor(Math.random()*2);//0,1,如果是turn=0表示白子先行,=1表示黑子先行
?? ?start.onclick=function(){
?? ? ? ?if(turn+1==1){
?? ??? ??? ? ? wflag=1;
?? ??? ??? ? ? bflag=0;?? ??? ? ??
?? ??? ? ? ? ?}
?? ? ? ?else{
?? ??? ??? ? ? wflag=0;
?? ??? ??? ? ? bflag=1;
?? ? ? ? ? ? ?} ?
?? ??? ?down(wflag,bflag);
?? ??? ?lflag=1;
?? ? ? ? ? }
//重新開始
document.getElementById("return").onclick=kaishi;
function kaishi(){
?? ?for(m=0;m<100;m++){
?? ??? ?document.getElementsByTagName("td")[m].innerHTML='<div class="block" id="the'+m+'"></div>';
?? ??? ?}?? ??? ?
?? ?out.style.cursor="default";
?? ?for(var j=0;j<100;j++){
?? ??? ?flag[j]=0;//flag重置為0
?? ?}
?? ? ? ?white.innerHTML="";
?? ? ? ?black.innerHTML="";
?? ??? ?wflag=0,bflag=0,lflag=0;
?? ??? ?var turn=Math.floor(Math.random()*2);//0,1
?? ? ? ?start.onclick=function(){
?? ? ? ?if(turn+1==1){
?? ??? ??? ? ? wflag=1;
?? ??? ??? ? ? bflag=0;
?? ??? ? ? ? ?}
?? ? ? ?else{
?? ??? ??? ? ? wflag=0;
?? ??? ??? ? ? bflag=1;
?? ? ? ? ? ? ?}
?? ??? ?down(wflag,bflag);
?? ??? ?lflag=1;
?? ? ? ? ? }
?? ??? ?win=0;
}
? ? function down(wflag,bflag){
?? ??? ?//下棋
?? ? ? ?if(wflag==0 && bflag==1){
?? ??? ? ? ? ?black.innerHTML="黑方執(zhí)子";
?? ??? ??? ? ?white.innerHTML="白方等待";
?? ??? ? ? ? ?wflag=1;
?? ??? ? ? ? ?bflag=0;
?? ??? ? ? ? ?out.style.cursor="url(./images/cursor1.cur),auto"; ??? ?
?? ??? ? ?}
?? ? ? ?else{
?? ??? ? ? ? ?white.innerHTML="白方執(zhí)子";
?? ??? ??? ? ?black.innerHTML="黑方等待";
?? ??? ? ? ? ?wflag=0;
?? ??? ??? ? ?bflag=1;
?? ??? ??? ? ?out.style.cursor="url(./images/cursor2.cur),auto";
?? ??? ? ?}?? ??
?? ??? ?happen(wflag,bflag); ? ??
? }
function happen(wflag,bflag){
?? ?if(wflag==0 && bflag==1){
?? ??? ?//白子
?? ??? ?fox("wq",wflag,bflag);
?? ??? ?}
?? ??? ?//黑子
?? ?else{
?? ??? ?fox("bq",wflag,bflag);
?? ??? ?}
?? ?}
function fox(color,wflag,bflag){
?? ?for(var i=0;i<100;i++){
?? ??? ?downup(i,color,wflag,bflag);
?? ?}?? ??? ??? ??? ?
function downup(i,color,wflag,bflag){
?? ? ? ? ? ?document.getElementById('the'+i).onclick=function(){
?? ??? ??? ??? ?if(flag[i]!=0){alert("禁止放子!");}
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?document.getElementById('the'+i).className=color;
?? ??? ??? ??? ??? ?if(color=="wq"){
?? ??? ? ? ? ? ? ? ?flag[i]=1;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else{flag[i]=2;}
?? ??? ??? ??? ??? ?down(wflag,bflag);
?? ??? ??? ??? ??? ?}?? ? ? ?
?? ? ? ? ? ? ? ? }
?? ??? ? ? ?}
?? ?}
//勝利
var win=0;
//正5子
function zheng(){
?? ?if(win==0){
?? ? for(var p=0;p<100;p++){
?? ??? ?if(flag[p]==1 && flag[p+1]==1 && flag[p+2]==1 && flag[p+3]==1 && flag[p+4]==1){
?? ??? ??? ? ?var h=p+4
?? ??? ? ? ? ?if(h!=10 && h!==20 && h!==30 && h!==40 && h!=50 && h!==60 && h!==70 && h!==80 && h!==90 && h!==100){
?? ??? ??? ? ? ? ?alert("白方獲勝!");
?? ??? ??? ? ? ? ?win=1;
?? ??? ??? ??? ? ?le2++;
?? ??? ??? ??? ? ?goal(le2,ri2);
?? ??? ??? ? ? ? }
?? ??? ??? ? ?else{return false;}
?? ??? ??? ?}
?? ??? ?else if(flag[p]==2 && flag[p+1]==2 && flag[p+2]==2 && flag[p+3]==2 && flag[p+4]==2){
?? ??? ??? ? var h=p+4
?? ??? ? ? ? if(h!=10 && h!==20 && h!==30 && h!==40 && h!=50 && h!==60 && h!==70 && h!==80 && h!==90 && h!==100){
?? ??? ??? ? ? ? alert("黑方獲勝!");
?? ??? ??? ? ? ? win=1;
?? ??? ??? ??? ? ri2++;
?? ??? ??? ??? ? goal(le2,ri2);
?? ??? ??? ?}
?? ??? ??? ?else{return false;}
?? ??? ?}
?? ? ?}
?? ?}
?? ?else{return true;}
}
//豎5子?
function shu(){
?? ?if(win==0){
?? ? for(var p=0;p<100;p++){
?? ??? ?if(flag[p]==1 && flag[p+10]==1 && flag[p+20]==1 && flag[p+30]==1 && flag[p+40]==1){
?? ??? ??? ? ? ? ?alert("白方獲勝!");
?? ??? ??? ? ? ? ?win=1;
?? ??? ??? ??? ? ?le2++;
?? ??? ??? ??? ? ?goal(le2,ri2);
?? ??? ??? ?}
?? ??? ?else if(flag[p]==2 && flag[p+10]==2 && flag[p+20]==2 && flag[p+30]==2 && flag[p+40]==2){
?? ??? ??? ? ? ? alert("黑方獲勝!");
?? ??? ??? ? ? ? win=1;
?? ??? ??? ??? ? ri2++;
?? ??? ??? ??? ? goal(le2,ri2);
?? ??? ?}
?? ? ?}
?? ?}
?? ?else{return true;}
?? ?}
//左斜5子
function left(){
?? ??? ?if(win==0){
?? ? ? ?for(var p=0;p<100;p++){
?? ??? ?if(flag[p]==1 && flag[p+11]==1 && flag[p+22]==1 && flag[p+33]==1 && flag[p+44]==1){
?? ??? ??? ? ? ? ?alert("白方獲勝!");
?? ??? ??? ? ? ? ?win=1;
?? ??? ??? ??? ? ?le2++;
?? ??? ??? ??? ? ?goal(le2,ri2);
?? ??? ??? ?}
?? ??? ?else if(flag[p]==2 && flag[p+11]==2 && flag[p+22]==2 && flag[p+33]==2 && flag[p+44]==2){
?? ??? ??? ? ? ? alert("黑方獲勝!");
?? ??? ??? ? ? ? win=1;
?? ??? ??? ??? ? ri2++;
?? ??? ??? ??? ? goal(le2,ri2);
?? ??? ?}
?? ? ?}
?? ?}
?? ?else{return true;}
?? ?}
//右斜5子
function right(){
?? ??? ?if(win==0){
?? ? ? ?for(var p=0;p<100;p++){
?? ??? ?if(flag[p]==1 && flag[p+9]==1 && flag[p+18]==1 && flag[p+27]==1 && flag[p+36]==1){
?? ??? ??? ? ? ? ?alert("白方獲勝!");
?? ??? ??? ? ? ? ?win=1;
?? ??? ??? ??? ? ?le2++;
?? ??? ??? ??? ? ?goal(le2,ri2);?
?? ??? ??? ?}
?? ??? ?else if(flag[p]==2 && flag[p+9]==2 && flag[p+18]==2 && flag[p+27]==2 && flag[p+36]==2){
?? ??? ??? ? ? ? alert("黑方獲勝!");
?? ??? ??? ? ? ? win=1;
?? ??? ??? ??? ? ri2++;
?? ??? ??? ??? ? goal(le2,ri2);
?? ??? ?}
?? ? ?}
?? ?}
?? ?else{return true;}
?? ?}?? ?
window.addEventListener('mousedown',zheng,false);
window.addEventListener('mousedown',shu,false);?? ?
window.addEventListener('mousedown',left,false);?? ?
window.addEventListener('mousedown',right,false);
window.addEventListener('mousedown',that,false);
}
</script>
</head>
<body>
<div id="play">
<button id="start">START</button>
<span id="white" style="margin-left:10px;"></span><span id="black" style="margin-left:110px;"></span>
</div>
<div id="history"><button id="return">重新開始</button></div>
<div class="tab" style="margin-left:0px;">
<div class="head"><img src="./images/baif.png" /></div>
<div class="score">
<div class="feshu" style="margin-left:0px;"><img src="./images/s0.png" id="left1" ></div>
<div class="feshu" style="margin-left:50px;"><img src="./images/s0.png" id="left2" ></div>
</div>
</div>
<div id="bi" style="position:absolute;width:18px;height:100px;margin-left:100px;margin-top:170px;"><img src="./images/bi.png" /></div>
<div class="tab" style="margin-left:120px;">
<div class="head"><img src="./images/heif.png" /></div>
<div class="score">
<div class="feshu" style="margin-left:0px;"><img src="./images/s0.png" id="right1" ></div>
<div class="feshu" style="margin-left:50px;"><img src="./images/s0.png" id="right2" ></div>
</div>
</div>
<div id="out">
<table width="600px" height="600px" border="1px" style="position:absolute;margin-top:4px;margin-left:4px;">
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr height="50px"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
</table>
</div>
</body>
</html>

網(wǎng)頁實(shí)現(xiàn)如下圖:

1.打開網(wǎng)頁;

2.點(diǎn)擊開始按鈕,隨機(jī)選擇白方還是黑方執(zhí)先手;

3.下棋,任何一方贏取勝利后,彈窗顯示,并計(jì)分;

4.勝利后可重新開局;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 5個(gè)讓你眼前一亮的JavaScript裝飾器技巧

    5個(gè)讓你眼前一亮的JavaScript裝飾器技巧

    JavaScript?裝飾器是一種特殊的功能,允許在不修改源代碼的情況下動(dòng)態(tài)修改類和函數(shù)的行為,本文將介紹五個(gè)讓你眼前一亮的裝飾器技巧,包括裝飾函數(shù)參數(shù)、裝飾類屬性、裝飾函數(shù)返回值和裝飾函數(shù)調(diào)用,需要的朋友可以參考下
    2023-06-06
  • 初學(xué)js插入節(jié)點(diǎn)appendChild insertBefore使用方法

    初學(xué)js插入節(jié)點(diǎn)appendChild insertBefore使用方法

    由于可見insertBefore()方法的特性是在已有的子節(jié)點(diǎn)前面插入新的節(jié)點(diǎn)但是兩種情況結(jié)合起來發(fā)現(xiàn)insertBefore()方法插入節(jié)點(diǎn),是可以在子節(jié)點(diǎn)列表的任意位置。
    2011-07-07
  • 微信小程序?qū)崿F(xiàn)收縮式菜單

    微信小程序?qū)崿F(xiàn)收縮式菜單

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)收縮式菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript實(shí)現(xiàn)帶粒子效果的進(jìn)度條

    JavaScript實(shí)現(xiàn)帶粒子效果的進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)帶粒子效果的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 通過 JS 判斷頁面是否有滾動(dòng)條的實(shí)現(xiàn)方法

    通過 JS 判斷頁面是否有滾動(dòng)條的實(shí)現(xiàn)方法

    最近在寫插件的過程中,需要使用 JS 判斷是否有滾動(dòng)條,搜了一下,大致方法都差不多,但都有些啰嗦,代碼不夠簡潔。最終通過參考不同方法,寫了一個(gè)比較簡單的方法
    2018-04-04
  • javascript實(shí)現(xiàn)youku的視頻代碼自適應(yīng)寬度

    javascript實(shí)現(xiàn)youku的視頻代碼自適應(yīng)寬度

    這篇文章主要介紹了javascript實(shí)現(xiàn)youku的視頻代碼自適應(yīng)寬度的方法的示例,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • 基于原生js運(yùn)動(dòng)方式關(guān)鍵點(diǎn)的總結(jié)(推薦)

    基于原生js運(yùn)動(dòng)方式關(guān)鍵點(diǎn)的總結(jié)(推薦)

    下面小編就為大家?guī)硪黄谠鷍s運(yùn)動(dòng)方式關(guān)鍵點(diǎn)的總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • javascript下IE與FF兼容函數(shù)收集

    javascript下IE與FF兼容函數(shù)收集

    在我們平時(shí)寫js的過程中,有可能會(huì)考慮到盡量兼容瀏覽器的兼容性,下面是兩個(gè)常用的方法
    2008-09-09
  • javascript命名約定(變量?函數(shù)?類?組件)

    javascript命名約定(變量?函數(shù)?類?組件)

    這篇小文章主要是通過一些例子來介紹一些Javascript中一些關(guān)于命名變量,函數(shù),類或者是組件的通用約定,雖然這些規(guī)則并不是強(qiáng)制性的,但是呢,他們卻被一些JS社區(qū)所廣泛采用,所以,了解他們還是很有必要的
    2023-03-03
  • js兼容的placeholder屬性詳解

    js兼容的placeholder屬性詳解

    這篇文章詳細(xì)介紹了js兼容的placeholder屬性,有需要的朋友可以參考一下
    2013-08-08

最新評論