Scheme 在racket中将文本显示为图像时换行

Scheme 在racket中将文本显示为图像时换行,scheme,racket,Scheme,Racket,假设我有一些长文本 (define EXTREMELY-LONG-TEXT "foo foo ...(like 25 times)... foo") 我需要把它画到一个背景上,它被约束在x轴上,而不是y轴上。是否有限制文本的x方向并默认向下展开的方法?还是我必须定义自己的功能来完成这项任务 目前,我有一个文本冒险游戏,可以改变文本的长度,我希望能够为游戏定义一个常量x,而不是定义一个大的背景来绘制,比如 (define BG (empty-scene 500 100)) (overlay/al

假设我有一些长文本

(define EXTREMELY-LONG-TEXT "foo foo ...(like 25 times)... foo")
我需要把它画到一个背景上,它被约束在x轴上,而不是y轴上。是否有限制文本的x方向并默认向下展开的方法?还是我必须定义自己的功能来完成这项任务

目前,我有一个文本冒险游戏,可以改变文本的长度,我希望能够为游戏定义一个常量x,而不是定义一个大的背景来绘制,比如

(define BG (empty-scene 500 100))
(overlay/align "center" "top" (text EXTREMELY-LONG-TEXT 16 "black") BG)

你需要自己做,但这不难

#lang racket

(require 2htdp/image)

(define TEXT-SIZE 16)
(define WIDTH 500)
(define limit (exact-floor (* 2.4 (/ WIDTH TEXT-SIZE))))

(define EXTREMELY-LONG-TEXT (string-append* (make-list 25 "foo ")))

(define (fit-string s)  
  (string-append*
   (map list->string
        (add-between (sequence->list (in-slice limit (string->list s)))
                     '(#\newline)))))

(define BG (empty-scene WIDTH 100))
(overlay/align
 "center" "top"
 (text (fit-string EXTREMELY-LONG-TEXT) TEXT-SIZE "black") BG)
公式
2.4*WIDTH/TEXT-SIZE
可以进一步改进,但对于这种情况,它已经足够有效了