首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在球拍中以函数式方式在上一幅画上作画

如何在球拍中以函数式方式在上一幅画上作画
EN

Stack Overflow用户
提问于 2015-01-12 06:37:34
回答 1查看 169关注 0票数 1

此代码维护刻度数,但所有方法都会在新屏幕上绘制

代码语言:javascript
复制
#lang racket
(require 2htdp/universe)
(require 2htdp/image)
(define pasaulis (empty-scene 100 100))

(define (trace-circle t)
  (place-image (circle 5 "solid" "blue")
                   (+ 50(* 40 (cos (/ t 100))))
                   (+ 50(* 40 (sin (/ t 100))))
                   pasaulis))

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

(big-bang 1000000
      (on-tick sub1 1/500)
      (to-draw trace-circle)
      (stop-when zero?)
      (record? true))

下面的代码确实维护了图片,但我不能将一些刻度传递给pain处理程序。

代码语言:javascript
复制
#lang racket
(require 2htdp/universe)
(require 2htdp/image)
(require picturing-programs)

(define (move-right-10 picture)
  (beside (rectangle 10 0 "solid" "white")
      picture))

(big-bang pic:calendar
      (on-draw show-it 500 100)
      (on-tick move-right-10 1/22))

我就是想不通。如何在修改屏幕的同时,使用刻度数绘制功能。大爆炸函数真的适合这个目的吗?

EN

回答 1

Stack Overflow用户

发布于 2015-01-12 22:46:37

下面是一个示例:

代码语言:javascript
复制
#lang racket
(require 2htdp/universe)
(require 2htdp/image)

(struct world (ticks pic))

(define pasaulis (empty-scene 1000 1000))

(define (render w)
  (world-pic w))

(define (handle-on-tick w)
  (define t (world-ticks w))
  (define p (world-pic w))
  (define new-ticks (+ t 1))
  (define new-pic (overlay/xy (text (number->string t) 12 "red")
                              (* -10 t) (* -10 t)
                              p))
  (world new-ticks new-pic))


(define (stop? w)
  (= (world-ticks w) 50))

(big-bang (world 0    pasaulis)
          (on-tick    handle-on-tick 1/5)
          (to-draw    render)
          (stop-when  stop?))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27892890

复制
相关文章

相似问题

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