BINGO游戏

利用javascript实现bingo小游戏,感觉挺无聊的游戏,主要是为了学习javascript,我把功能添加的过程逐步加上去,这样是一个学习的过程

HTML代码部分,比较简单,我就折叠起来好了

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <link rel="stylesheet" href="css_01.css">
    <title>Make your own Bingo Card</title>
</head>
<body>
<h1>create your own bingo card!</h1>
<table>
    <tr>
        <th>B</th>
        <th>I</th>
        <th>N</th>
        <th>G</th>
        <th>O</th>
    </tr>
    <tr>
        <td id="square0">&nbsp;</td>
        <td id="square5">&nbsp;</td>
        <td id="square10">&nbsp;</td>
        <td id="square14">&nbsp;</td>
        <td id="square19">&nbsp;</td>
    </tr>
    <tr>
        <td id="square1">&nbsp;</td>
        <td id="square6">&nbsp;</td>
        <td id="square11">&nbsp;</td>
        <td id="square15">&nbsp;</td>
        <td id="square20">&nbsp;</td>
    </tr>
    <tr>
        <td id="square2">&nbsp;</td>
        <td id="square7">&nbsp;</td>
        <td id="free">&nbsp;</td>
        <td id="square16">&nbsp;</td>
        <td id="square21">&nbsp;</td>
    </tr>
    <tr>
        <td id="square3">&nbsp;</td>
        <td id="square8">&nbsp;</td>
        <td id="square12">&nbsp;</td>
        <td id="square17">&nbsp;</td>
        <td id="square22">&nbsp;</td>
    </tr>
    <tr>
        <td id="square4">&nbsp;</td>
        <td id="square9">&nbsp;</td>
        <td id="square13">&nbsp;</td>
        <td id="square18">&nbsp;</td>
        <td id="square23">&nbsp;</td>
    </tr>
</table>
<p><a href="Bingo.html" id="reload">Click here</a>to create a new card </p>
</body>
</html>
<script src="js_01.js"></script>

然后是css部分,也折叠啦,.winningBG这个图片大家随便找个图片就行,我也不会上传,效果出来就Ok啦

body{
    background: white;
    color: black;
    font-size: 20px;
    font-family:verdana, helvetica, arial, sans-serif;
    font-weight: 900;
}

h1,th{
    font-family:verdana, helvetica, arial, sans-serif;
}

h1{
    font-size: 28px;
}

table{
    border-collapse: collapse;
}

th,td{
    padding: 10px;
    border: 2px #666 solid;
    text-align: center;
    width: 20px;
}

#free, .pickedBG{
    background-color: #f66;
}

.winningBG{
    background-image: url("img.jpg");
}

最后是Javascript部分的,我加上详细注释,大家可以看看吧,包含了挺多知识点的

/**
 * Created by rui on 2015/5/5.
 */
/** 利用脚本自动填充数据,很有意思了啊。。。。*/

/**
 * 开发步骤
 * 1.B列1-15 I列16-30 N列31-45 G列46-60 O列61-75,限定数值范围
 * 2.去掉列元素重合的情况,通过在运行时更新数组的方式
 * 3.组合使用javascript和css来对点击事件进行操作
 * 4.判胜情况,这部分代码我就是随便抄抄的
 */

window.onload=initAll;
var usedNums=new Array(76);

function initAll(){
    if(document.getElementById) {
        document.getElementById("reload").onclick=anotherCard;
        newCard();
    }else{
        alert("sorry,浏览器不支持!")
    }
}

function newCard(){
    for(var i=0;i<24;i++) {
        setSquare(i);
    }
}

function setSquare(thisSquare){
    var currentSquare="square"+thisSquare;
    var colPlace=new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
    var colBasic=colPlace[thisSquare]*15;
    var newNum;
    do{
        newNum=colBasic+getNum()+1;
    }while(usedNums[newNum]);

    //将数组的内容改为存储当前值
    usedNums[newNum]=true;
    document.getElementById(currentSquare).innerHTML=newNum;
    document.getElementById(currentSquare).className="";
    document.getElementById(currentSquare).onmousedown=toggleColor;
}

function getNum(){
    return Math.floor(Math.random()*15);
}

function anotherCard(){
    for(var i=1;i<usedNums.length;i++){
        usedNums[i]=false;
    }
    newCard();
    return false;
}

function toggleColor(evt){
    if(evt){
        var thisSquare=evt.target;
    }
    else{
        var thisSquare=window.event.srcElement;
    }
    if(thisSquare.className==""){
        thisSquare.className="pickedBG";
    }
    else{
        thisSquare.className="";
    }
    checkwin();
}

function checkwin(){
    var winningOption=-1;
    var setSquare=0;
    var winners=new Array(31,992,15360,507904,541729,557328,1083458,2162820,4329736,8519745,8659472,16252928);

    for(var i=0;i<24;i++){
        var currentSquare="square"+i;
        if(document.getElementById(currentSquare).className!=""){
            document.getElementById(currentSquare).className="pickedBG";
            setSquare=setSquare|Math.pow(2,i);
        }
    }

    for(var i=0;i<winners.length;i++){
        if((winners[i]&setSquare)==winners[i]){
            winningOption=i;
        }
    }

    if(winningOption>-1){
        for(var i=0;i<24;i++){
            if(winners[winningOption]&Math.pow(2,i)){
                currentSquare="square"+i;
                document.getElementById(currentSquare).className="winningBG";
            }
        }
    }
}

这个实例是根据《javascript基础教程(第八版)》写的,这本书从第一章就直接上例子感觉很有意思啊,学的东西比较多。

ps:抱怨一下javascript开发好烦啊,各种错误根本就没有提示,唯一调试的方法就是找效果和心理预期的差别然后慢慢琢磨,不知道大神有没有更方便的调试工具什么的,我用的开发工具是WebStorm开发感觉挺方便,调试就很揪心啦。。。。

ps:听说写博客需要很高的水平,不然还是不要拿出来丢人现眼了,可是我估计了一下我的情况,恐怕没啥机会能写了,所以我决定,出来丢人现眼好啦,就把每天做的一些事情记下来,反正不发布在博客我也会记在笔记里面,差不多啦。。。

ps:没有老师检查,格式啥的,凑合看吧

时间: 2024-10-07 13:34:07

BINGO游戏的相关文章

5月份月会总结

5月份月会总结 在会议之前,给大家发了两则通知: 会议主要分为3个部分,第一部分,每个人写一个感动自己的人或事(与本部门相关的),然后分享,得出最佳故事,并向大家共同分享:第二部分,是常规汇报流程:第三部分,主题是"如何做回顾". Part1 感动的人或事 目的,活跃氛围同时,也把大家带入回顾状态,同时加强部门内同事间沟通. 会议流程如下: 讲故事规则:先给大家讲规则(①卡片上内容写什么②多长时间完成) 发卡片写故事:每个人得到一张卡片,开始填写,用时7分钟(5分钟最佳): 讲打分及交

python顺序选择循环使用

格式化输出 顺序选择循环结构 简单使用 查看某个模块.内置函数或者某个对象使用帮助help([module|object.ways]) 格式化输出 将代码按照指定格式输出:%对字符串进行格式化,\用来做转义 格式符:%c:显示字符的ASCII码%d,%i:显示十进制整数%e:科学计数法数值显示%f:浮点数%s:字符串%%:显示%修饰符:#[.#]:第一个#数字控制显示的宽度,第二个表示小数点的精度-:左对齐+:显示数值的符号 顺序选择循环结构:格式强要求! 分支结构,单分支.双分支,多分支: i

学习Python 猜字游戏(上)

缺点:不能生成随机答案 num = 19 i_num = -1 n = 0 # 一个猜数字的游戏,3次机会 while num != i_num: n = n + 1 i_num = int(input('请输入数字:')) if n < 3: if i_num > num: print("大了哦") elif i_num < num: print('小了哦') else: print('Bingo!') elif n >= 3: if i_num == num

*循环-20. 猜数字游戏

1 /* 2 * Main.c 3 * C20-循环-20. 猜数字游戏 4 * Created on: 2014年8月18日 5 * Author: Boomkeeper 6 *********测试部分通过********* 7 */ 8 9 #include <stdio.h> 10 11 int main(void){ 12 13 int random = 0,N = 0;//系统输入的随机数和最大猜测次数 14 int in = 0;//每次输入的猜测 15 int count = 0

循环-20. 猜数字游戏(15)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a,n,g,i=1; 5 cin>>a>>n; 6 while(cin>>g){ 7 if(i>n||g<0){ 8 cout<<"Game Over"<<endl; 9 break; 10 } 11 else{ 12 if(g>a) 13 cout<<&qu

04-4. 猜数字游戏(15)

猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了.如果猜到,则结束程序.程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”:如果3次以内猜到该数,则提示“Lucky You!”:如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”:如果超过N次都没有猜到,则提示“Game Over”,

python写的第一个简单小游戏-猜数字

1 #Filename:game1.py 2 3 guess=10 4 running=True 5 while running: 6 try: 7 answer=int(raw_input('Guess what i think:')) 8 except: 9 print 'Please input interga\n' 10 continue 11 12 if answer<guess: 13 print 'Your answer is too small\n' 14 continue 15

20170913自制猜数字游戏

/* 猜数字:系统随机生成一个四位数,请根据下列判断猜出来 A:数值正确,位置正确 B:数值正确,位置不正确 C:数值不正确 */ #include<stdio.h> #include<time.h> #include<stdlib.h> #pragma warning (disable:4996) #define pUCharHead unsigned char * //以数组形式返回n个无重复的随机数,范围可指定[min,max] pUCharHead GenNoR

洛谷P1199 三国游戏

题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之间有一个"默契值",表示若此两位武将作为一对组合作战时,该组合的威力有多大.游戏开始前,所有武将都是自由的(称为自由武将,一旦某个自由武将被选中作为某方军队的一员,那么他就不再是自由武将了),换句话说,所谓的自由武将不属于任何一方. 游戏开始,小涵和计算机要从自由武将中挑选武将组成自己的军