标题: 猜数字小游戏
[打印本页]
作者: wishpopo
时间: 2009-5-10 07:23
标题: 猜数字小游戏
鄙人接触本论坛已经大半年了,一直是碌碌无为。深感惭愧,进来突发感想想练习一下自己,鄙人就决定从感觉上最好掌握的if语句开始练习。于是我就根据我见到的第一个c++课程里面的猜数字开始练习。
这是我第一次发帖子。所以特地搜索一下论坛,发现论坛原来已经有猜数字小游戏的帖子。我大致看了一下给我自己写的还是有点区别的,就斗胆拿出来让大家看看。并且提点建议。并且希望能通过我这个帖子交到跟多喜欢dos命令的朋友。我qq号402643394
以下是我写的代码:
变量说明:s 代表选择的等级 x是确定要猜测数字最大值,a代表你输入的数,b代表你已经猜测的次数,c 代表你应该在什么范围内猜出数字猜不是很柴 ,p代表随即出来的数字。
@echo off
title 猜数字小游戏
mode con:cols=60 lines=30
color 9a
::此处标签用于下次猜测的开始。
:a
set /a x=4
echo 猜数字的范围从1开始。最高等级是13级
set /p s=请输入你像挑战的等级:
::将s赋值给s1,s1将用于判断猜对数字后对你的评语。
set s1=%s%
::因为1等级已经大于random所产生数的最大数。当所选择的等级高于13时就默认为13,并打印提示用户
if %s% gtr 13 set s=13
echo 你挑战的等级是%s%级
::标签 x 和xx 用来使x以2的倍数来递增,递增次数有等级决定
:x
if %s% neq 0 (
set /a s=%s%-1
goto xx
)else (
goto y
)
:xx
set /a x=%x%*2
goto x
:y
::echo %x%
::将等级以2的倍数递增所得的数减一 满足最大等级13级产生的数字等于随即数的最大数
set /a x=%x%-1
::产生一个从1到%x%随即数
set /a p= %random%^%%x%+1
:: 设置b用来计算已经猜测的次数
set b=0
::echo %p%
::此处标签用于重新开始输入
:aa
set /p a=请在1到%x%之间猜测:
::每重新输入一次b就加一
set /a b=%b%+1
::判断输入的数跟产生数字大小比较的结果并输出
if %a% neq %p% (
if %a% lss %p% (
echo too small
echo 你已经猜了%b%次
goto aa
) else (
echo too large
echo 你已经猜了%b%次
goto aa
)
) Else (
echo 你一共猜了%b%次
)
::根据比较次数选择评价语
set /a c=%s1%+2
if %b% gtr %c% (
echo 你很失败
)else echo very good!
::判断用户是否继续玩
set /p j=输入y继续其他退出:
if %j% equ y (
cls
goto a
)else (
exit
)
pause
[
Last edited by wishpopo on 2009-5-12 at 10:12 ]
作者: HAT
时间: 2009-5-10 11:55
个人建议如下:
1、发布代码是时使用code标签,以便他人复制;
2、批处理应该用来做一些实用的东西,此类游戏代码用来练练手还行,万勿沉迷;
3、不管用哪门语言或脚本写程序,请使用有意义的变量名、标签名;
4、严格注意代码缩进;
5、可以尝试添加一个猜数字游戏的常见功能:提示用户几个数字正确且位置正确、几个数字正确但位置错误;
6、goto后面的标签最好加上冒号;
...
作者: SNSB
时间: 2009-5-11 01:59
话说把批处理作为一种程序语言还是不好的,因为它的定位只是 *批量 处理 命令*。
例如,你让我输个数字,结果我输入字母,你是无法检测的。而且,控制结够不强,
满版全是goto,代码长一点就令人头大。
作者: SNSB
时间: 2009-5-11 02:02
其实改过的代码还可以,LZ 加油(我说令人头大不是指你的代码)。
作者: HAT
时间: 2009-5-11 02:14
批处理不是语言,是脚本。
Quote: |
例如,你让我输个数字,结果我输入字母,你是无法检测的。 |
|
也许你无法检测,但是批处理可以检测。
作者: wishpopo
时间: 2009-5-11 10:21
我用goto语句是因为了随所选等级而把数字递增。
goto语句在c++语言已经被取缔了 但也能用。有时用起来很不错,但说来却打乱了程序的结构性。
就像hat老大说的批处理是脚本 我感觉批处理配合vbscript 能更好的来完成我们对电脑的管理和维护。
开发语言对于开发游戏软件来说是很好的。
但我们批处理是应用电脑本身的资源来管理资源的,你说是不。
以上都是我自己的看法有什么不对你就对我说。我们一起交流一下。
我个人看法:只有大胆的说出自己的看法,哪怕他看起来荒唐可笑,至少我说出来之后会有人告诉我哪里不对 好改正 你说对不
感谢hat 老大,和哥们的评价。小弟接收了。
关于这个小游戏输入字符方面,在判断上我不知道如何处理,还望各位指教一下。
[
Last edited by wishpopo on 2009-5-11 at 10:28 ]
作者: SNSB
时间: 2009-5-12 08:02
Quote: |
Originally posted by HAT at 2009-5-11 02:14:
批处理不是语言,是脚本。 |
|
----
我不知道HAT兄对于脚本和语言的定义是什么,至少在我眼里脚本是一种语言:
http://en.wikipedia.org/wiki/Scripting_language 。
可能大家指的“语言”可能是“通用语言”。
Quote: |
Originally posted by HAT at 2009-5-11 02:14:
也许你无法检测,但是批处理可以检测。 |
|
----------------------
是的,我确实一直以为不可以,谷歌了一下也没结果,希望HAT兄不吝赐教。
Quote: |
Originally posted by wishpopo at 2009-5-11 10:21:
我用goto语句是因为了随所选等级而把数字递增。 |
|
---------------
wishpopo 兄这么用当然没错;我指的是批处理脚本本身控制结构的问题。
记得之前我看过psdk/ddk 的设置命令行编译环境的脚本,一TUO的GOTO,
估计写的人也会火大,呵呵。
Quote: |
以上都是我自己的看法有什么不对你就对我说。我们一起交流一下。 |
|
---------------
哈哈,我也是疯狂的小鸟,学习学习。
作者: HAT
时间: 2009-5-12 08:13
标题: Re 7楼
好吧,请继续坚持你的想法吧。
Quote: |
是的,我确实一直以为不可以,谷歌了一下也没结果,希望HAT兄不吝赐教。 |
|
本版有N多这样的例子,你可以先试着搜索一下。如果不会搜索,可参考:
http://www.cn-dos.net/forum/viewthread.php?tid=44122#pid308085