猜数字游戏程序设计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猜数字游戏程序设计相关的知识,希望对你有一定的参考价值。
1、随机产生一个0至99的数字(不显示)
2、输入猜测数字,程序提示和所猜数字大小,直至正确
3、猜数正确后显示猜数的次数
4、程序采用汇编语言在PC机上完成
第一步:把如下代码加入<head>区域中
<SCRIPT LANGUAGE="javascript">
var js_mult1=3141
var js_mult2=5821
var js_m1=100000000
var js_m2=10000
var js_iseed=0
var js_iseed1=0
var js_iseed2=0
function random(n)
if (js_iseed == 0)
now = new Date()
js_iseed = now.getHours() + now.getMinutes() * 60
+ now.getSeconds() * 3600
js_iseed1 = js_iseed / js_m2
js_iseed2 = js_iseed % js_m2
var tmp = (((js_iseed2 * js_mult1 + js_iseed1 * js_mult2) % js_m2) *
js_m2 + (js_iseed2 * js_mult2)) % js_m1
js_iseed = (tmp + 1) % js_m1
return (Math.floor((js_iseed/js_m1) * n))
var myNumber = 0
var nGuesses = 0
function guessnum()
var response
var num = parseInt(document.forms[0].guess.value)
document.forms[0].guess.value = num // visual feedback in case of NaN
nGuesses++ // increase the guess count
response = "哦,你猜的数 "
if (num < myNumber) response = response + "太小了"
if (num > myNumber) response = response + "太大了"
if (num == myNumber)
response = response + "对了!!你猜到我了!"
nGuesses = 0
myNumber = random(100)+1
document.forms[1].result.value=response
document.forms[1].guesses.value=nGuesses
document.forms[0].guess.focus()
document.forms[0].guess.select()
return true
function giveup()
var response
nGuesses = 0
response = "我的数字是" + myNumber +". 想猜我的新数吗?"
myNumber = random(100)+1
document.forms[1].result.value=response
document.forms[1].guesses.value=nGuesses
document.forms[0].guess.focus()
document.forms[0].guess.select()
</SCRIPT>
<font size="3" color="#FF0000">
我手中有一个数,它的范围在1~100之间,你能猜到它是几吗?</font></b><font size="4">
</font>
<SCRIPT>
myNumber = random(100)+1
nGuesses = 0
</SCRIPT>
<FORM onSubmit="guessnum(); return false">
填入你猜的数: <INPUT TYPE="text" NAME="guess" SIZE=5>
<INPUT TYPE="button" VALUE=" 我来猜 " onClick="guessnum()">
<INPUT TYPE="button" VALUE=" 放弃 " onClick="giveup()">
</FORM>
<FORM>
你已猜了: <INPUT TYPE="text" NAME="guesses" SIZE=3>次
提示信息: <INPUT TYPE="text" NAME="result" SIZE=35>
</FORM>
第二步:把<body>区域中的内容改为:
<body onLoad="document.forms[0].guess.focus(); document.forms[0].guess.select()">
参考资料:http://shuozuo.com/a/JavaScriptgongxiang/you_xi_lei/2009/1215/97.html
参考技术A import java.awt.*;import java.awt.event.*;
import java.text.MessageFormat;
import java.util.Random;
import javax.swing.*;
public class GuessNumbergame extends JFrame
private JTextField textField;
private JButton button;
private GuessNumber guessNumber;
public static void main(String args[])
GuessNumbergame game = new GuessNumbergame();
game.setVisible(true);
public GuessNumbergame()
this.setTitle("猜数游戏");// 设置窗口标题
this.setResizable(false);// 设置窗口不能改变大小
this.setLocation(400, 300);// 设置窗口在屏幕的位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置点击窗口关闭退出程序
this.getContentPane().setLayout(new FlowLayout());// 设置流式布局
this.guessNumber = new GuessNumber();// 创建猜数业务逻辑对象
this.textField = new JTextField("", 10);// 创建文本框, 宽度10列
this.textField
.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);// 文本框从右往左输入字符
this.getContentPane().add(textField);// 文本框加入窗口
this.textField.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent actionEvent)
action();
);// 设置文本框的事件监听器
this.button = new JButton();// 创建按钮
this.button.setText(MessageFormat.format("第0次猜数", this.guessNumber
.getGuessCount()));// 设置按钮上的文字
this.button.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent actionEvent)
action();
);// 设置按钮的事件监听器
this.getContentPane().add(button);// 按钮加入到窗口
this.pack();// 调整窗口大小, 适应内部组件大小
/**
* 处理事件的动作
*
*/
private void action()
int guessNumber = 0;// 创建猜数变量
try
guessNumber = Integer.parseInt(this.textField.getText());// 转型输入字符串为整数
catch (NumberFormatException e)
JOptionPane.showMessageDialog(this, "输入的不是数字, 请重新输入.", "提示信息",
JOptionPane.ERROR_MESSAGE);// 显示错误消息窗口, 提示输入不是数字
this.textField.grabFocus();// 文本框获得焦点
return;
if (this.guessNumber.guess(guessNumber))
int confirm = JOptionPane.showConfirmDialog(this,
MessageFormat .format("祝贺你答对了, 正确答案是0", guessNumber, "提示信息"));
if (this.guessNumber.getGuessCount()<=5)
confirm = JOptionPane.showConfirmDialog(this,
MessageFormat .format("你仅仅猜了0次就猜对了,真聪明!", this.guessNumber.getGuessCount(), "提示信息",
JOptionPane.YES_NO_OPTION));
if (this.guessNumber.getGuessCount()>5&&this.guessNumber.getGuessCount()<=10)
confirm = JOptionPane.showConfirmDialog(this,
MessageFormat .format("你是猜了0次猜对的,也算可以啊!是否继续猜数?", this.guessNumber.getGuessCount(), "提示信息",
JOptionPane.YES_NO_OPTION));
if (this.guessNumber.getGuessCount()>10)
confirm = JOptionPane.showConfirmDialog(this,
MessageFormat .format("你猜了0次才猜对的,继续努力啊!是否继续猜数?", this.guessNumber.getGuessCount(), "提示信息",
JOptionPane.YES_NO_OPTION));
if (confirm == JOptionPane.NO_OPTION)
System.exit(0);// 用户选择否退出系统
else
this.guessNumber.retry();// 用户选择是, 继续
else
if (guessNumber < this.guessNumber.getAnswer()&&(this.guessNumber.getAnswer()-guessNumber<=5))
JOptionPane.showMessageDialog(this, "再大点,已经很近接了!!", "提示信息",
JOptionPane.INFORMATION_MESSAGE);
if (guessNumber < this.guessNumber.getAnswer()&&(this.guessNumber.getAnswer()-guessNumber>5))
JOptionPane.showMessageDialog(this, "再大点", "提示信息",
JOptionPane.INFORMATION_MESSAGE);// 显示消息窗口, 提示再大点
if (guessNumber> this.guessNumber.getAnswer()&&(guessNumber-this.guessNumber.getAnswer()<=5))
JOptionPane.showMessageDialog(this, "再小点,已经很近接了!!", "提示信息",
JOptionPane.INFORMATION_MESSAGE);// 显示消息窗口, 提示再大点
if (guessNumber>this.guessNumber.getAnswer()&&(guessNumber-this.guessNumber.getAnswer()>5))
JOptionPane.showMessageDialog(this, "再小点", "提示信息",
JOptionPane.INFORMATION_MESSAGE);// 显示消息窗口, 提示再大点
this.textField.setText("");// 设置文本框为空字符串
this.textField.grabFocus();// 文本框获得焦点
button.setText(MessageFormat.format("第0次猜数", this.guessNumber
.getGuessCount()));// 设置按钮上的文字
this.pack();// 调整窗口大小, 适应内部组件大小
class GuessNumber
private int guessCount;
private int answer;
public GuessNumber()
this.retry();
public void retry()
this.guessCount = 1;
this.answer = Math.abs(new Random().nextInt() % 100) + 1;
public boolean guess(int guessNumber)
this.guessCount++;
if (answer == guessNumber)
this.guessCount--;
return true;
else
return false;
public int getGuessCount()
return guessCount;
public int getAnswer()
return answer;
参考技术B 我有 qq659759175
python实现猜数字游戏
欢迎光临我的blog!!!下面我将用python实现猜数字游戏。
用python实现猜数字游戏可以加深python初学者循环结构的理解和运用。
猜数字游戏规则如下:电脑程序随机生成一个数字,作为猜数字游戏的最终答案,用户在键盘输入所猜数字。用户每猜一次程序都会做出相应的提示。若用户输入所猜的数字小于电脑随机生成的数字,则提示“你猜小了”;若大于,则提示“你猜大了”;若等于,则提示“恭喜你,猜对了”。
这里我们需要用到一个随机生成数字的库:random,使用如下:
#导入随机生成模块
import random
#随机生成一个1~100之间(不包括100)的随机整数
answer = random.randrange(1,100)
假设对用户所猜数次数没有限制,直到猜中为止。则我们通过while循环实现猜数字游戏:
# 导入随机生成模块
import random
# 随机生成一个1~100之间(不包括100)的随机整数
answer = random.randrange(1, 100)
while True:
your_answer = int(input("请输入你的答案:"))
if your_answer > answer:
print("你猜大了大")
elif your_answer < answer:
print("你猜小了")
else:
print("恭喜你,猜中了")
break
结果如下:
如果对猜次数有限制,则我们可以用一个变量,如‘count’用来存储所猜次数,当达到次数限制则提前退出游戏,代码如下(这里我们也可以直接用for循环控制循环次数):
# 导入随机生成模块
import random
# 随机生成一个1~100之间(不包括100)的随机整数
answer = random.randrange(1, 100)
#统计所猜次数
count = 0
while True:
count += 1 #每循环一次,count加一
your_answer = int(input("请输入你的答案:"))
if your_answer > answer:
print("你猜大了")
elif your_answer < answer:
print("你猜小了")
else:
print("恭喜你,猜中了")
break
if count == 3: #循环次数达到3,则游戏结束退出循环
print("游戏结束,您未猜中")
break
结果如下:
接下来我们对这个游戏进行一个小改动,由用户输入一个数字,让电脑猜:
代码如下:
# 导入随机生成模块
import random
#用户输入数字
answer = int(input('请输入答案:'))
#每循环一次,改变范围。big表示范围结束值,small表示范围开始值,count依然用于统计次数
big, small, count= 100, 1, 0
#电脑程序所猜第一个值,我们先在循环外得到
guess = random.randrange(small, big)
while True:
count += 1
if guess > answer:
print(f'电脑猜{guess},猜大了')
big = guess
guess = random.randrange(small, guess)
elif guess < answer:
print(f'电脑猜{guess},猜小了')
small = guess +1
guess = random.randrange(small, big)
else:
print(f'正确答案{answer},电脑猜{count}次猜中了,给它666')
break
结果如下:
还有很多有趣的小程序,大家可以去我的主页看哦~
以上是关于猜数字游戏程序设计的主要内容,如果未能解决你的问题,请参考以下文章