crapsgame.htm
来自「“常见程式演算”主要收集一些常见的程式练习题目」· HTM 代码 · 共 87 行
HTM
87 行
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="css/stdlayout.css" type="text/css">
<link rel="stylesheet" href="css/print.css" type="text/css">
<meta content="text/html; charset=gb2312" http-equiv="content-type">
<title>Craps赌博游戏</title>
</head>
<body>
<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>
<h1><a href="AlgorithmGossip.htm">Algorithm Gossip: Craps赌博游戏</a></h1>
<h2>说明</h2>
一个简单的赌博游戏,游戏规则如下:玩家掷两个骰子,点数为1到6,如果第一次点数和为7或11,则玩家胜,如果点数和为2、3或12,则玩家输,如果和
为其它点数,则记录第一次的点数和,然后继续掷骰,直至点数和等于第一次掷出的点数和,则玩家胜,如果在这之前掷出了点数和为7,则玩家输。<br>
<h2>解法</h2>
规则看来有些复杂,但是其实只要使用switch配合if条件判断来撰写即可,小心不要弄错胜负顺序即可。<br>
<h2>实作</h2>
<ul>
<li> C
</li>
</ul>
<pre>#include <stdio.h><br>#include <stdlib.h><br>#include <time.h><br>#define WON 0<br>#define LOST 1<br>#define CONTINUE 2<br><br>int rollDice() { <br> return (rand() % 6) + (rand() % 6) + 2;<br>}<br><br>int main(void) {<br> int firstRoll = 1;<br> int gameStatus = CONTINUE;<br> int die1, die2, sumOfDice;<br> int firstPoint = 0;<br> char c;<br><br> srand(time(0));<br><br> printf("Craps赌博游戏,按Enter键开始游戏****");<br><br> while(1) {<br> getchar();<br><br> if(firstRoll) {<br> sumOfDice = rollDice();<br> printf("\n玩家掷出点数和:%d\n", sumOfDice);<br><br> switch(sumOfDice) {<br> case 7: case 11:<br> gameStatus = WON; break;<br> case 2: case 3: case 12:<br> gameStatus = LOST; break;<br> default:<br> firstRoll = 0;<br> gameStatus = CONTINUE;<br> firstPoint = sumOfDice;<br> break;<br> }<br> }<br> else {<br> sumOfDice = rollDice();<br> printf("\n玩家掷出点数和:%d\n", sumOfDice);<br><br> if(sumOfDice == firstPoint)<br> gameStatus = WON;<br> else if(sumOfDice == 7)<br> gameStatus = LOST;<br> }<br><br> if(gameStatus == CONTINUE)<br> puts("未分胜负,再掷一次****\n");<br> else {<br> if(gameStatus == WON)<br> puts("玩家胜");<br> else<br> puts("玩家输");<br><br> printf("再玩一次?");<br> scanf("%c", &c);<br> if(c == 'n') {<br> puts("游戏结束");<br> break;<br> }<br> <br> firstRoll = 1;<br> }<br> }<br><br> return 0;<br>} <br></pre>
<br>
<ul>
<li> Java
</li>
</ul>
<pre>import java.io.*; <br><br>public class Craps { <br> public static void main(String[] args) <br> throws IOException { <br> final int WON = 0, LOST = 1, CONTINUE = 2; <br> boolean firstRoll = true; <br> int gameStatus = CONTINUE; <br> int die1, die2, sumOfDice; <br> int firstPoint = 0; <br> <br> System.out.print(<br> "Craps赌博游戏,按Enter键开始游戏****"); <br><br> while(true) { <br> System.in.read(); <br><br> if(firstRoll) { <br> sumOfDice = rollDice(); <br> System.out.println(<br> "\n玩家掷出点数和:" + sumOfDice); <br><br> switch(sumOfDice) { <br> case 7: case 11: <br> gameStatus = WON; break; <br> case 2: case 3: case 12: <br> gameStatus = LOST; break; <br> default: <br> firstRoll = false; <br> gameStatus = CONTINUE; <br> firstPoint = sumOfDice; <br> break; <br> } <br> } <br> else { <br> sumOfDice = rollDice(); <br> System.out.println(<br> "\n玩家掷出点数和:" + sumOfDice); <br><br> if(sumOfDice == firstPoint) <br> gameStatus = WON; <br> else if(sumOfDice == 7) <br> gameStatus = LOST; <br> } <br><br> if(gameStatus == CONTINUE) <br> System.out.println("未分胜负,再掷一次****"); <br> else { <br> if(gameStatus == WON) <br> System.out.println("玩家胜"); <br> else <br> System.out.println("玩家输"); <br><br> System.out.print("再玩一次?"); <br> if(System.in.read() == 'n') { <br> System.out.println("游戏结束"); <br> break; <br> } <br> <br> firstRoll = true; <br> } <br> } <br> } <br><br> public static int rollDice() { <br> int roll = ((int)(Math.random() * 6) + <br> (int)(Math.random() * 6)); <br><br> if(roll < 2) {<br> roll = 2;<br> }<br><br> return roll;<br> } <br>}</pre>
<br>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?