中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 猜数字小游戏 上一主题 | 下一主题
wishpopo
新手上路





积分 18
发帖 20
注册 2008-10-28
状态 离线
『楼 主』:  猜数字小游戏

鄙人接触本论坛已经大半年了,一直是碌碌无为。深感惭愧,进来突发感想想练习一下自己,鄙人就决定从感觉上最好掌握的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 ]

2009-5-10 07:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

个人建议如下:
1、发布代码是时使用code标签,以便他人复制;
2、批处理应该用来做一些实用的东西,此类游戏代码用来练练手还行,万勿沉迷;
3、不管用哪门语言或脚本写程序,请使用有意义的变量名、标签名;
4、严格注意代码缩进;
5、可以尝试添加一个猜数字游戏的常见功能:提示用户几个数字正确且位置正确、几个数字正确但位置错误;
6、goto后面的标签最好加上冒号;
...



2009-5-10 11:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
SNSB
初级用户





积分 31
发帖 16
注册 2009-5-6
状态 离线
『第 3 楼』:  

话说把批处理作为一种程序语言还是不好的,因为它的定位只是 *批量 处理 命令*。
例如,你让我输个数字,结果我输入字母,你是无法检测的。而且,控制结够不强,
满版全是goto,代码长一点就令人头大。



SNSB is Not Simply a Biologist!
2009-5-11 01:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SNSB
初级用户





积分 31
发帖 16
注册 2009-5-6
状态 离线
『第 4 楼』:  

其实改过的代码还可以,LZ 加油(我说令人头大不是指你的代码)。



SNSB is Not Simply a Biologist!
2009-5-11 02:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  



  Quote:
话说把批处理作为一种程序语言还是不好的

批处理不是语言,是脚本。

  Quote:
例如,你让我输个数字,结果我输入字母,你是无法检测的。

也许你无法检测,但是批处理可以检测。



2009-5-11 02:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wishpopo
新手上路





积分 18
发帖 20
注册 2008-10-28
状态 离线
『第 6 楼』:  

我用goto语句是因为了随所选等级而把数字递增。
goto语句在c++语言已经被取缔了 但也能用。有时用起来很不错,但说来却打乱了程序的结构性。

就像hat老大说的批处理是脚本 我感觉批处理配合vbscript 能更好的来完成我们对电脑的管理和维护。

开发语言对于开发游戏软件来说是很好的。

但我们批处理是应用电脑本身的资源来管理资源的,你说是不。


以上都是我自己的看法有什么不对你就对我说。我们一起交流一下。


我个人看法:只有大胆的说出自己的看法,哪怕他看起来荒唐可笑,至少我说出来之后会有人告诉我哪里不对 好改正 你说对不


感谢hat 老大,和哥们的评价。小弟接收了。

关于这个小游戏输入字符方面,在判断上我不知道如何处理,还望各位指教一下。

[ Last edited by wishpopo on 2009-5-11 at 10:28 ]

2009-5-11 10:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SNSB
初级用户





积分 31
发帖 16
注册 2009-5-6
状态 离线
『第 7 楼』:  



  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:
以上都是我自己的看法有什么不对你就对我说。我们一起交流一下。

---------------
哈哈,我也是疯狂的小鸟,学习学习。



SNSB is Not Simply a Biologist!
2009-5-12 08:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 7楼



  Quote:
我不知道HAT兄对于脚本和语言的定义是什么,至少在我眼里脚本是一种语言:
http://en.wikipedia.org/wiki/Scripting_language
可能大家指的“语言”可能是“通用语言”。

好吧,请继续坚持你的想法吧。

  Quote:
是的,我确实一直以为不可以,谷歌了一下也没结果,希望HAT兄不吝赐教。

本版有N多这样的例子,你可以先试着搜索一下。如果不会搜索,可参考:
http://www.cn-dos.net/forum/viewthread.php?tid=44122#pid308085



2009-5-12 08:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: