Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 论击键 我试图把我放在中间的红色球向上、向下、向左或向右移动。当我按下任何一个箭头键时,它说它需要一个数字,但给出了一个图像。我做错了什么?_Scheme_Racket - Fatal编程技术网

Scheme 论击键 我试图把我放在中间的红色球向上、向下、向左或向右移动。当我按下任何一个箭头键时,它说它需要一个数字,但给出了一个图像。我做错了什么?

Scheme 论击键 我试图把我放在中间的红色球向上、向下、向左或向右移动。当我按下任何一个箭头键时,它说它需要一个数字,但给出了一个图像。我做错了什么?,scheme,racket,Scheme,Racket,首先,你需要了解世界是如何在这个主循环中处理的: 该系统采用了大爆炸-100的第一个参数,并将其作为一个世界国家进行记忆 然后它将其传递给一个on tick(sub1)函数,前提是它存在于每个tick上 当按下该键时,它将调用键(change),并将woldState作为w参数传递给该键 在那里你画了一些图片,并在按下箭头键时返回。因此,当按下箭头时,它返回球图像的结果=放置图像的结果-图像 系统会将其作为当前世界状态进行记忆, 在下一个勾号中,它将新值传递给旧过程:sub1 由于该值现在是图

首先,你需要了解世界是如何在这个主循环中处理的:

  • 该系统采用了大爆炸-100的第一个参数,并将其作为一个世界国家进行记忆
  • 然后它将其传递给一个on tick(sub1)函数,前提是它存在于每个tick上
  • 当按下该键时,它将调用键(change),并将woldState作为w参数传递给该键
  • 在那里你画了一些图片,并在按下箭头键时返回。因此,当按下箭头时,它返回球图像的结果=放置图像的结果-图像
  • 系统会将其作为当前世界状态进行记忆, 在下一个勾号中,它将新值传递给旧过程:sub1
  • 由于该值现在是图像,sub1将拒绝该值
--

如果要在两个方向上移动球,必须存储至少两个坐标(x.y)。现在让世界状态成为两个数字的对。我们不需要一个on-tick函数,因为它本身没有任何变化。此外,我们不需要在键盘处理器中绘制球,因此让我们简单地更改球对(worldState)中的相应值,并仅在调用(球图像)期间绘制球,该调用将球放入新位置(请记住,x=(car t),y=(cdr t)和(x.y)=(cons x y)):

(需要2htdp/image)
(需要2htdp/宇宙)

(定义(球图像t);首先,您需要了解在这个主圆中世界是如何处理的:

  • 该系统采用了大爆炸-100的第一个参数,并将其作为一个世界国家进行记忆
  • 然后它将其传递给一个on tick(sub1)函数,前提是它存在于每个tick上
  • 当按下该键时,它将调用键(change),并将woldState作为w参数传递给该键
  • 在这里,您可以绘制一些图片,并在按下箭头键时返回它。因此,当按下箭头时,它将返回球图像的结果=放置图像的结果-图像
  • 系统会将其作为当前世界状态进行记忆, 在下一个勾号中,它将新值传递给旧过程:sub1
  • 由于该值现在是图像,sub1将拒绝该值
--

如果你想在两个方向上移动一个球,你必须存储至少两个坐标(x.y)。因此,现在让WorldState成为两个数字的对。我们不需要一个on tick函数,因为它本身不会发生任何变化。此外,我们也不需要在键盘处理器中绘制球,所以让我们简单地更改对中的相应值(worldState),并仅在调用(球图像)将球放入新位置时绘制它(记住,x=(car t),y=(cdr t)和(x.y)=(cons x y)):

(需要2htdp/image)
(需要2htdp/宇宙)

(定义(球图像t);你的合同在哪里?你的函数的目的陈述在哪里?不清楚每个函数的目的是什么;与其强迫人们猜测,不如把它写出来。你有任何关于
更改的测试用例吗?
?sub1实际上是一个数字过程,所以它需要数字。在(勾号…)place应该是一个函数,它可以将所谓的世界状态每一个记号都转换为一个。@Necto:sub1将是一个从世界到世界的完美函数,如果OP描述了世界状态是什么的话。没有那么多的信息,我们什么也说不出来。这就是为什么我试图强迫OP表达代码以外的东西:它们是haven根本没有说类型应该是什么,并且几乎忽略了基本的设计配方步骤。你的合同在哪里?你的函数的目的陈述在哪里?不清楚每个函数的目的是什么;与其强迫人们猜测,不如把它写出来。你有
更改
的测试用例吗1实际上是一个数字过程,所以它需要数字。在(勾选…)place应该是一个函数,它可以将所谓的世界状态每一个记号都转换为一个。@Necto:sub1将是一个从世界到世界的完美函数,如果OP描述了世界状态是什么的话。没有那么多的信息,我们什么也说不出来。这就是为什么我试图强迫OP表达代码以外的东西:它们是haven根本没有说这些类型应该是什么,几乎忽略了基本的设计步骤。
(require 2htdp/image)
(require 2htdp/universe)

(define (render t)
  (text (number->string t) 10 "red"))

(define (ball-image t)
  (place-image (circle 10 "solid" "red")
              150
              150

               (empty-scene 300 300)))



(define (change w a-key)
  (cond
    [(key=? a-key "left")  (ball-image w)]
    [(key=? a-key "right") (ball-image w )]
    [(= (string-length a-key) 1) w] 
    [(key=? a-key "up")    (ball-image w )]
    [(key=? a-key "down")  (ball-image w )]
    [else w]))



(big-bang 100
          (on-tick sub1 )
          (to-draw ball-image)
          (on-key change))
(require 2htdp/image)
(require 2htdp/universe)

(define (ball-image t) ;<-- the t-parameter is our WorldState
  (place-image (circle 10 "solid" "red")
               (car t) ;<-- here now x variable coordinate
               (cdr t) ;<-- here now y variable, instead of 150
               (empty-scene 300 300)))



(define (change w a-key)
  (cond ;w - is the previous worldState, V here we change it
    [(key=? a-key "left")  (cons (sub1 (car w)) (cdr w))];and 
    [(key=? a-key "right") (cons (add1 (car w)) (cdr w))];return 
    [(= (string-length a-key) 1) w] ;<-- this line is excess
    [(key=? a-key "up")    (cons (car w) (sub1 (cdr w)))]
    [(key=? a-key "down")  (cons (car w) (add1 (cdr w)))]
    [else w])) ;<-- If the key of no interest, just
                    return the previous WorldState

(big-bang '(150 . 150) ;<-- initial state
          (to-draw ball-image) ;<-- redraws the world
          (on-key change)) ;<-- process the event of key press