Html5最简单的游戏Demo——Canvas绘图的骰子
2024-08-31 04:39:50
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>骰子游戏</title>
<script type="text/javascript">
var crapsSize = 100;//骰子的width,height
var crapsMargin = 50;//骰子的边距
var pointRadius = 10;//点的半径
var money = 500;//钱 function InitCraps() {
drawCraps(6, 6, 6); var sumLabel = document.getElementById("coinSum");
sumLabel.textContent = money;
} function Bet() {
var num1 = Math.floor(Math.random() * 6 + 1);
var num2 = Math.floor(Math.random() * 6 + 1);
var num3 = Math.floor(Math.random() * 6 + 1); drawCraps(num1, num2, num3); var resultLabel = document.getElementById("betResult");
var sumLabel = document.getElementById("coinSum");
var bigRadio = document.getElementById("bigRadio"); var crapsSum = num1 + num2 + num3;
if (crapsSum == 3 || crapsSum == 18) {//庄家通杀
money = money - 50;
sumLabel.textContent = money;
resultLabel.textContent = "庄家通杀!";
}
else if (crapsSum <= 10) {//4~10,小
if (bigRadio.checked) {
money = money - 50;
sumLabel.textContent = money;
resultLabel.textContent = "有赌未为输,继续!";
}
else {
money = money + 50;
sumLabel.textContent = money;
resultLabel.textContent = "不赌不知时运高,继续!";
}
}
else {//11~17,大
if (bigRadio.checked) {
money = money + 50;
sumLabel.textContent = money;
resultLabel.textContent = "不赌不知时运高,继续!";
}
else {
money = money - 50;
sumLabel.textContent = money;
resultLabel.textContent = "有赌未为输,继续!";
}
}
} function drawCraps( craps1,craps2,craps3) {
var ctx = document.getElementById("myCanvas").getContext("2d"); var crapsArray = new Array(craps1, craps2, craps3);
for (var i = 0; i < 3; i++) {
var xOffset = crapsMargin * (i + 1) + crapsSize * i; ctx.clearRect(xOffset, crapsMargin, crapsSize, crapsSize);
switch (crapsArray[i]) {
case 1: draw1(ctx, xOffset);
break;
case 2: draw2(ctx, xOffset);
break;
case 3: draw3(ctx, xOffset);
break;
case 4: draw4(ctx, xOffset);
break;
case 5: draw5(ctx, xOffset);
break;
default: draw6(ctx, xOffset);
break;
}
}
} function drawRect(ctx,xOffset) {
ctx.strokeRect(xOffset, crapsMargin, crapsSize, crapsSize);
} function draw1(ctx, xOffset) {
ctx.beginPath();
ctx.arc(xOffset + crapsSize / 2, crapsMargin + crapsSize / 2, pointRadius, 0, 2 * Math.PI, true);
ctx.fill(); drawRect(ctx, xOffset);
} function draw3(ctx, xOffset) {
draw1(ctx, xOffset);
draw2(ctx, xOffset);
} function draw5(ctx, xOffset) {
draw4(ctx, xOffset);
draw1(ctx, xOffset);
} function draw4(ctx, xOffset) {
ctx.beginPath();
ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 4, pointRadius, 0, 2 * Math.PI, true);
ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 4 * 3, pointRadius, 0, 2 * Math.PI, true);
ctx.closePath();
ctx.fill(); ctx.beginPath();
ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 4, pointRadius, 0, 2 * Math.PI, true);
ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 4 * 3, pointRadius, 0, 2 * Math.PI, true);
ctx.closePath();
ctx.fill(); drawRect(ctx, xOffset);
} function draw2(ctx, xOffset) {
ctx.beginPath();
ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 4 * 3, pointRadius, 0, 2 * Math.PI, true); ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 4, pointRadius, 0, 2 * Math.PI, true);
ctx.fill(); drawRect(ctx, xOffset);
} function draw6(ctx, xOffset) {
ctx.beginPath();
ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 2, pointRadius, 0, 2 * Math.PI, true);
ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 2, pointRadius, 0, 2 * Math.PI, true);
ctx.closePath();
ctx.fill(); draw4(ctx, xOffset);
}
</script>
</head>
<body onload="InitCraps()">
<canvas id="myCanvas" width="500" height="200">your broswer does not support canvas.</canvas>
<br />
<input type="radio" name="sex" value="大" id="bigRadio" checked="checked"/>大
<input type="radio" name="sex" value="小" />小
<br />
<input type="button" value="play" onclick="Bet()" />
<br />
<label>*三个骰子,总点数为4至10称作小,11至17为大,围骰除外</label>
<br />
<label>本次结果:</label>
<label id="betResult">Null</label>
<br />
<label>当前钱币总数为:</label>
<label id="coinSum">0</label>
</body>
</html>
最新文章
- Laravel 5.3 请求处理管道详解
- C++编写DLL的方法
- Linux更改主机名--适用于Centos
- Eclipse:Cannot complete the install because of a conflicting dependency.问题解决
- sql-exists和not exists
- [原]android不支持命名的semaphore
- eclipse/myeclipse选中编辑区域文件,Package Explorer定位文件所在项目及目录
- oracle删除用户所有的表
- jQuery背景跟随鼠标移动的网页导航
- 利用 force recovery 解决服务器 crash 导致 MySQL 重启失败的问题
- POJ1743 Musical Theme(后缀数组 二分)
- Netty入门(二)之PC聊天室
- 360极速浏览器Onetab插件存储位置
- 【Redis】4、Redis学习资料
- Django中使用Celery实现定时任务(用djcelery)
- MVC 视图页对数字,金额 用逗号 隔开(数字格式化)
- JavaScript运算符:递增和递减(++i,--i 和 i++,i-- 的区别)
- HTML 页面中的 SVG
- CentOS6.5(4)----宿主机无法访问虚拟机中的web服务解决方案
- LTE试题