我对球拍的语言很陌生。我有一个任务,在这个任务中,我们必须编写一个游戏,滚动两个骰子,并使用他们的总和,以确定一个成功的掷球。当我运行它时,它应该说:例如:
You threw X and Y which makes a throw of Z.
(X, Y, and Z are number values)
然而,为了充分的信用,我们必须使用图形表示,所以我尝试使用每个骰子脸的图片。现在,我只想输出以下内容:
(image of first die) and (image of second die)
我的代码如下所示:
(define (showDice)
(bitmap "path_of_first_die_image")
(display "and")
(bitmap "path_of_second_die_image"))
但是,当我运行它时,它只打印" and“和最后一个图像,如下所示:
and (image of second die)
发布于 2014-03-29 03:51:43
在Scheme中,只有define
的最后一个值是返回值。display
调用不是一个返回值。第一个位图不显示在屏幕上,因为它不是一个返回值,也不是显式显示的。"and"
不是一个返回值,而是显式显示的。第二个位图是一个返回值,因此由DrRacket自动显示。(实际上Scheme和Lisp都是这样做的,但是显示图像是DrRacket的一个特点。)
要有一个包含这三个元素的返回值,可以编写:
(define (showDice)
(list
(bitmap "path_of_first_die_image")
'and
(bitmap "path_of_second_die_image")))
(showDice)
这三个元素由DrRacket显示,但是输出对用户不是很好。因此,如果您希望更多地控制这些值在屏幕上的显示方式,您可以自己在屏幕上display
这些值,而无需返回值,也不需要依赖DrRacket捕获返回值来显示它们,下面是您可以做的事情(工作示例):
#lang racket
(require 2htdp/image)
(define (showDice)
(display (bitmap icons/b-run.png))
(display " and ")
(display (bitmap icons/stop-16x16.png)))
(showDice)
注意,showDice
的返回值是(display (bitmap icons/stop-16x16.png))
的值,它是none (或者更确切地说是#<void>
),因为display
被定义为不返回值。
(还请注意,在Scheme函数中,通常在所有小写中都是在单词之间使用破折号命名的,因此可以将函数命名为show-dice
。)
https://stackoverflow.com/questions/22725598
复制