首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个位图调用无效

多个位图调用无效
EN

Stack Overflow用户
提问于 2014-03-29 00:51:03
回答 1查看 86关注 0票数 0

我对球拍的语言很陌生。我有一个任务,在这个任务中,我们必须编写一个游戏,滚动两个骰子,并使用他们的总和,以确定一个成功的掷球。当我运行它时,它应该说:例如:

代码语言:javascript
运行
复制
You threw X and Y which makes a throw of Z.
(X, Y, and Z are number values)

然而,为了充分的信用,我们必须使用图形表示,所以我尝试使用每个骰子脸的图片。现在,我只想输出以下内容:

代码语言:javascript
运行
复制
(image of first die) and (image of second die) 

我的代码如下所示:

代码语言:javascript
运行
复制
(define (showDice)  
  (bitmap "path_of_first_die_image")
  (display "and")
  (bitmap "path_of_second_die_image"))

但是,当我运行它时,它只打印" and“和最后一个图像,如下所示:

代码语言:javascript
运行
复制
  and (image of second die)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 11:51:43

在Scheme中,只有define的最后一个值是返回值。display调用不是一个返回值。第一个位图不显示在屏幕上,因为它不是一个返回值,也不是显式显示的。"and"不是一个返回值,而是显式显示的。第二个位图是一个返回值,因此由DrRacket自动显示。(实际上Scheme和Lisp都是这样做的,但是显示图像是DrRacket的一个特点。)

要有一个包含这三个元素的返回值,可以编写:

代码语言:javascript
运行
复制
(define (showDice)
  (list
    (bitmap "path_of_first_die_image")
    'and
    (bitmap "path_of_second_die_image")))

(showDice)

这三个元素由DrRacket显示,但是输出对用户不是很好。因此,如果您希望更多地控制这些值在屏幕上的显示方式,您可以自己在屏幕上display这些值,而无需返回值,也不需要依赖DrRacket捕获返回值来显示它们,下面是您可以做的事情(工作示例):

代码语言:javascript
运行
复制
#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。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22725598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档