TGD Consulting is a software house that use a lo Rebol, they made the following game in pure Rebol.
The game will show you some numbers for few seconds, then they disappear and are covered of empty boxes; you have to click the boxes from the lower number to the higher number. It's a memory game, very difficult:
Here the source:
 REBOL [
        Title: "Brain-It!" 
        Home: http://www.TGD-Consulting.DE/Download.html 
        Name: "Brain-It!" 
        File: %BrainIt.r 
        Needs: 'View 
        Date: 29-Jul-2006 
        Version: 1.0.0 
        Author: "Dirk Weyand" 
        Owner: "Dirk Weyand" 
        Rights: "TGD-Consulting" 
        Purpose: "A game to train your brain." 
        Comment: {
Brain-It! is a game using REBOL/View.
It is a braintwister-game inspired by
the theories of Dr. Ryuta Kawashima. 
To play this game memories the numbers
appearing on the grid and click on their
position from lowest to highest value.
The numbers will vanish, so you
must remember where they are. 
Play Brain-It! everyday to 
enhance your mental-fitness.
This game is dedicated to 
my wonderful beloved wife.
Have fun & enjoy this game !} 
        History: [
                {0.0.1     ^-21-Jul-2006 ^-"initial release"^/} 
                {0.1.0     ^-22-Jul-2006 ^-"added timer"^/} 
                {0.2.0     ^-23-Jul-2006 ^-"added highscore"^/} 
                {0.2.1     ^-23-Jul-2006 ^-"changed background color"^/} 
                {0.2.2     ^-23-Jul-2006 ^-"fixed game-play"^/} 
                {0.3.0     ^-23-Jul-2006 ^-"added count-down"^/} 
                {0.4.0     ^-27-Jul-2006 ^-"added levels 12-16"^/} 
                {1.0.0     ^-29-Jul-2006 ^-"first public release"^/}
        ] 
        License: {(C) TGD-Consulting
End User License Agreement
IMPORTANT. READ CAREFULLY.
This Lisense Agreement (AGREEMENT) is a legal contract between you and TGD-Consulting (TGD) for the limited use of this TGD software product (SOFTWARE), which includes computer software, and, as applicable, associated media, printed materials, and electronic documentation.
This SOFTWARE is licensed, not sold, to you. TGD retains all right, title and interest in and to the SOFTWARE including, without limitation, all intellectual property rights relating to or embodied in the SOFTWARE.
TGD grants you an non-exclusice license to use the SOFTWARE for personal use only. Commercial use requires seperate licensing from TGD. This AGREEMENT is not assignable or transferable without prior written approval of TGD.
The copyright, trademark, and other proprietary rights notices contained in the SOFTWARE may not be removed, altered, or added to in any way. You may not reverse engineer, decompress, decompile, or disassemble the SOFTWARE. You may not redistribute the SOFTWARE without prior written approval of TGD.
The SOFTWARE key that unlocks additional features and components may not be distributed, published, or transferred. Only the registered licensee of the SOFTWARE key may enable or use the additional features and components of this SOFTWARE.
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND. IN NO EVENT WILL TGD OR THE AUTHOR OF THE SOFTWARE BE HELD LIABLE FOR ANY DAMAGES ARISING FROM THE USE OF THIS SOFTWARE.
You agree to use the SOFTWARE in compliance with all applicable laws and regulations including all laws governing the export or re-export of the SOFTWARE. You agree to indemnify TGD from and against your violation of any such laws or regulations.
This AGREEMENT contains the entire agreement between the parties with respect to the license of the SOFTWARE. This AGREEMENT supercedes any prior license agreement of the SOFTWARE.
By installing or using the SOFTWARE, you are consenting to be bound by and are becoming a party to this AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THE SOFTWARE.}
]
if not all [value? 'view? view?] [
        until [
                print "^L^/Brain-It! requires REBOL/View !!!^/" 
                wait 0.15 
                print "^L^/^/" 
                not none? wait [system/ports/input 0.15]
        ] 
        quit
] 
view: func do head insert find mold third :view "/new" {/kf "Keeps feel of window face"
        } do head replace mold second :view "view-face/feel: window-feel" {if not kf [view-face/feel: system/view/window-feel]} 
bg-color: silver - 20 
blau: 122.154.198 
lic-read: ulf: false 
main-offset: none 
debug: false 
Stufe: [4 5 6 7 8 9 10 12 14 16] 
random/seed now 
game-over: true 
started: count: false 
Index: 1 
score: 0 
time: 0 
begin: now 
Brainiacs: 0 
MaxMist: 3 
bg-effect: compose [gradient 0x1 (bg-color) (bg-color - 30.30.10)] 
copydate: copy find/tail first system/script/Header/History "^-" 
clear find copydate " " 
copydate: to date! copydate 
either greater? now/year copydate/year [copydate: join form copydate/year ["-" now/year]] [copydate: form copydate/year] 
either found? suffix: find/last system/script/Header/File "." [filename: copy/part system/script/Header/File subtract length? system/script/Header/File length? suffix ] [filename: copy system/script/Header/File ] 
config-file: join filename ".config" 
highscore-path: join filename "-highscores.r" 
highscores: either exists? highscore-path [load highscore-path] [
        [[score "    1" name "T G D                 " time "1:00:01" date "23-Jul-2006"]]
] 
btn-styles: stylize [
        btn: button no-wrap edge [color: gray size: 1x1] effects compose/deep [[gradient 0x1 (bg-color - 10 + 32) (bg-color - 10 - 32)] [gradient 0x-1 (bg-color - 10 + 32) (bg-color - 10 - 32)]] font [color: ivory - 20 colors/1: color] 
        small-btn: box 19x19 no-wrap edge [size: 1x1 effect: 'bevel color: gray] font [color: ivory -20 colors/1: color] feel [
                redraw: func [face act pos] [
                        face/edge/effect: pick [ibevel bevel] face/state
                ] 
                over: func [face action event] [
                        if all [face/font face/font/colors] [
                                face/font/color: pick face/font/colors not action 
                                show face 
                                face/font/color: first face/font/colors
                        ]
                ] 
                engage: func [face action event] [
                        switch action [
                                down [face/state: on] 
                                alt-down [face/state: on] 
                                up [if face/state [do-face face none] face/state: off] 
                                alt-up [if face/state [do-face-alt face none] face/state: off] 
                                over [face/state: on] 
                                away [face/state: off]
                        ] 
                        show [face]
                ]
        ]
] 
message: func [
        "Display a message window" 
        str [string! block! object!] "Message to display" 
        /offset xy [pair!] "Offset of window" 
        /color colors [tuple! block!] "Used colors" 
        /timeout time 
        /local lay result hdl msg c1 c2 c3 f x-hdl x-txt x-p
] [
        lay: either all [object? str in str 'type str/type = 'face] 
        [str] [
                c1: green c2: c3: bg-color / 3 
                hdl: "N O T E :" 
                if color [either block? colors [set [c1 c2 c3] colors] [c1: colors]] 
                either block? str [
                        str: reduce str 
                        set [hdl msg] str 
                        str: reform next next str 
                        foreach n [hdl msg str] [
                                if all [found? get n not string? get n] [set n form get n]
                        ]
                ] [
                        msg: str 
                        str: ""
                ] 
                f: layout [h1 copy hdl c1 center middle edge [color: bg-color size: 1x1 effect: 'bevel]] 
                x-hdl: 20 - 44 + first f/size 
                either empty? str 
                [f: layout [across text bold copy msg c2 middle]] 
                [f: layout [across text bold copy msg c2 middle text copy str c3 middle]] 
                x-txt: subtract first f/size 44 
                either greater? x-txt x-hdl [x-p: to integer! (x-txt - x-hdl / 2)] [x-p: 0] 
                result: copy [
                        backdrop effect bg-effect 
                        across 
                        pad x-p 
                        button x-hdl copy hdl middle center font [size: 20 colors: compose [(c1) (c1 - 40)]] edge [color: gray size: 1x1 effect: 'bevel] [result: true hide-popup] [result: true hide-popup] return 
                        text bold copy msg c2 middle with [feel: none]
                ] 
                if not empty? str [insert tail result [text copy str c3 middle with [feel: none]]] 
                layout result
        ] 
        lay/pane/2/effects: lay/pane/2/color: none 
        result: none 
        either offset [inform/offset/timeout lay xy time] [inform/timeout lay time] 
        result
] 
scroll-slider-text: func [tf sf /local tmp size sms] [
        if none? tf/para [exit] 
        size: size-text tf 
        sms: subtract sf/size 2 * sf/edge/size 
        tmp: min 0x0 tf/size - size - 0x8 
        either sf/size/x > sf/size/y [
                tf/para/scroll/x: sf/data * first tmp 
                either any [system/version > 1.3.0 equal? system/product 'Link] [sf/pane/1/size/x: max 10 to integer! divide sms/x max 1 (first size) / tf/size/x ] [sf/pane/size/x: max 10 to integer! divide sms/x max 1 (first size) / tf/size/x ]
        ] [
                tf/para/scroll/y: sf/data * second tmp 
                either any [system/version > 1.3.0 equal? system/product 'Link] [sf/pane/1/size/y: max 10 to integer! divide sms/y max 1 (second size) / tf/size/y ] [sf/pane/size/y: max 10 to integer! divide sms/y max 1 (second size) / tf/size/y ]
        ] 
        sf/state: -1 
        show [tf sf]
] 
scroll-smooth: func [dx tf sf /init /local d] [
        d: divide 2 max sf/size/x sf/size/y 
        either positive? dx [
                while [all [lesser? sf/data 1 positive? dx]] [
                        sf/data: min 1 sf/data + d 
                        dx: subtract dx d 
                        scroll-slider-text tf sf
                ]
        ] [
                while [all [positive? sf/data 1 negative? dx]] [
                        sf/data: max 0 sf/data - d 
                        dx: add dx d 
                        scroll-slider-text tf sf
                ]
        ] 
        if init [tf/para/scroll: 0x0]
] 
scroll-wheel: func [page n tf sf /init /end] [
        either init [
                either end [
                        scroll-smooth/init (n * (either page [tf/size/y] [tf/font/size])) tf sf
                ] [
                        scroll-smooth/init divide (n * (either page [tf/size/y] [tf/font/size])) max 1 second size-text tf tf sf
                ] 
                if all [not lic-read greater? sf/data 0.97] [lic-read: true]
        ] [
                either end [
                        scroll-smooth (n * (either page [tf/size/y] [tf/font/size])) tf sf
                ] [
                        scroll-smooth divide (n * (either page [tf/size/y] [tf/font/size])) max 1 second size-text tf tf sf
                ]
        ]
] 
scroll-area: func [page n af /local d size] [
        if none? af/para [exit] 
        size: size-text af 
        d: (n * (either page [af/size/y] [af/font/size])) 
        either positive? d [
                while [all [positive? add size/y - af/size/y + 8 af/para/scroll/y positive? d]] [
                        d: subtract d 2 
                        af/para/scroll/y: max subtract af/para/scroll/y 2 negate size/y - af/size/y + 8 
                        show af
                ]
        ] [
                while [all [negative? af/para/scroll/y negative? d]] [
                        d: add d 2 
                        af/para/scroll/y: min add af/para/scroll/y 2 0 
                        show af
                ]
        ]
] 
license-agreement: layout [
        styles btn-styles 
        backdrop bg-color effect reduce ['gradient 0x1 (bg-color) (bg-color - 30.30.10) 'grid 8x8 (bg-color - 10)] 
        across 
        banner join system/script/header/Name "    -    E U L A" 416 with [feel: none] 
        return 
        space 0 
        f-txt: text 400x150 bg-color / 3 bg-color + 40 edge [color: gray size: 2x2 effect: 'ibevel] with [feel: none] 
        f-sld: slider f-txt/size/y * 0x1 + 16x0 bg-color / 1.5 bg-color - 15 edge [color: gray] [scroll-slider-text f-txt f-sld f-txt/para/scroll: 0x0 if greater? face/data 0.97 [lic-read: true]] return 
        pad 1x10 return 
        btn 80 "ACCEPT" "ACCEPTED" keycode [#"^M"] [either lic-read [unview license-agreement] [message/timeout {Read the complete EULA before you accept the agreement !!!} 0:00:06 hide-popup]] [either lic-read [unview license-agreement] [message/timeout {Read the complete EULA, before you accept the agreement!!!} 0:00:06 hide-popup]] 
        pad 256 
        btn 80 "Cancel" "Canceld" keycode [#"^["] [unview/all quit] [unview/all quit] 
        key keycode [up page-up] [scroll-wheel/init true -1 f-txt f-sld] 
        key keycode [down page-down] [scroll-wheel/init true 1 f-txt f-sld] 
        key keycode [home] [scroll-wheel/init/end true -1 f-txt f-sld] 
        key keycode [end] [if lic-read [scroll-wheel/init/end true 1 f-txt f-sld]]
] 
insert find/tail system/script/header/license "(C)" join " " copydate 
f-txt/text: copy system/script/header/license 
either any [system/version > 1.3.0 equal? system/product 'Link] [f-sld/pane/1/edge/color: gray ] [f-sld/pane/edge/color: gray ] 
license-agreement/feel: make license-agreement/feel [
        detect: func [face event /local rc] [
                rc: true 
                switch event/type [
                        scroll-line [scroll-wheel/init false event/offset/y f-txt f-sld] 
                        scroll-page [scroll-wheel/init true event/offset/y f-txt f-sld] 
                        key [if found? face: find-key-face face event/key [
                                        if get in face 'action [do-face face event/key] 
                                        rc: false
                                ]
                        ] 
                        close [quit]
                ] 
                if rc [event]
        ]
] 
m: 0 
either exists? join filename ".license" [
        either all [not error? try [do load join filename ".license" ulf: false] value? 'expiry value? 'license-key value? 'licensee] [
                either date? expiry [
                        either greater? now/date expiry [
                                m: 3
                        ] [
                                either equal? license-key checksum/key read system/options/script join system/script/Header/Name [user-prefs/name expiry licensee] [ulf: true ] [m: 2 ]
                        ]
                ] [
                        either equal? license-key checksum/key read system/options/script join system/script/Header/Name [user-prefs/name licensee] [ulf: true ] [m: 2 ]
                ]
        ] [m: 2 ]
] [m: 1 ] 
if any [not ulf not exists? config-file] [
        scroll-slider-text f-txt f-sld 
        view/kf center-face license-agreement
] 
switch m [
        1 [message/color reduce [" A T T E N T I O N : " reform [system/script/Header/Name "license-file not found !!!"] reform ["Please contact" system/script/Header/Rights "& purchase a license."]] yellow
        ] 
        2 [message/color reduce [" A T T E N T I O N : " reform ["Your" system/script/Header/Name "license-key is not valid !!!"] reform ["Please contact" system/script/Header/Rights "to get a new license-file."]] yellow
        ] 
        3 [message/color reduce [" A T T E N T I O N : " reform ["Your" system/script/Header/Name "license-key is expired !!!"] reform ["Please contact" system/script/Header/Rights "to get a new license-file."]] yellow
        ]
] 
if exists? config-file [
        if not error? try [set [myoffset] read/direct/lines config-file] [
                if found? myoffset [error? try [main-offset: to pair! myoffset]]
        ]
] 
seconds: func [
        "Compute difference between dates in seconds." 
        a [date!] "first date" 
        b [date!] "second date"
] [((b - a) * to decimal! 86400) + ((to decimal! b/time) - (to decimal! a/time)) + ((a/zone/hour - b/zone/hour) * to decimal! 3600) ] 
shutdown: func ["Exits the programm." ] [
        if ulf [
                write config-file reduce [lay-main/offset newline]
        ] 
        unview/all 
        either debug [halt] [quit]
] 
update-file: func [data] [
        set [path file] split-path highscore-path 
        if not exists? path [make-dir/deep path] 
        write highscore-path data
] 
save-file: has [buf] [
        buf: reform ["REBOL [Title:" mold join system/script/Header/Name " Highscore" "Date:" now "]^/[^/"] 
        foreach n highscores [repend buf [mold n newline]] 
        update-file append buf "]"
] 
init-highscore: has [i date rank score time] [
        clear scorelist/text 
        i: 1 
        rank: " " 
        append scorelist/text {TOP-20
            Score             Name                 Time                 Date                
-------------------------------------------------------} 
        foreach element highscores [
                append scorelist/text newline 
                clear rank 
                if i < 10 [append rank 0] 
                append rank i 
                append rank ". " 
                score: select element 'score 
                while [3 > length? score] [insert score " "] 
                time: select element 'time 
                while [7 > length? time] [append time " "] 
                date: select element 'date 
                while [11 > length? date] [insert date " "] 
                append scorelist/text reform [rank score " " select element 'name " " time " (" date ")"] 
                i: i + 1
        ] 
        date: to string! now/date 
        while [11 > length? date] [insert date " "] 
        for i (1 + length? highscores) 20 1 [
                clear rank 
                if i < 10 [append rank 0] 
                append rank i 
                append rank ". " 
                append scorelist/text newline 
                append scorelist/text reform [rank "---" " " "-----                 " " " "-------" " (" date ")"]
        ] 
        append scorelist/text newline 
        append scorelist/text {-------------------------------------------------------} 
        show scorelist
] 
update-highscore: func [
        "Update highscore" 
        myscore [integer!] "The score in the game" 
        myname [string!] "The name of the player" 
        mytime [time!] "The number of cards on the playfield" 
        /local index
] [
        while [14 < length? myname] [remove at myname length? myname] 
        while [14 > length? myname] [append myname " "] 
        index: 1 
        foreach element highscores [
                either myscore > to integer! trim select element 'score [
                        insert at highscores index to block! mold reduce ['score form myscore 'name myname 'time form mytime 'date form now/date] 
                        break
                ] [
                        if all [(equal? myscore to integer! trim select element 'score) (mytime < to time! trim select element 'time)] [
                                insert at highscores index to block! mold reduce ['score form myscore 'name myname 'time form mytime 'date form now/date] 
                                break
                        ]
                ] 
                index: index + 1
        ] 
        while [20 < length? highscores] [remove at highscores length? highscores] 
        init-highscore
] 
highscore: layout [
        style sky-btn button edge [color: blau] effects [[gradient 0x1 164.200.255 90.118.152] [gradient 0x-1 160.200.240 80.108.142]] font [colors: [255.255.255 28.52.86]] 
        backdrop effect [gradient 0x1 164.200.255 80.108.142] 
        across 
        pad 45 h1 underline "Highscores" 28.52.86 with [feel: none] 
        pad 80 sky-btn "Close" "Closed" 90 keycode [#"^["] [unview/only highscore] [message/timeout "Press left mouse-button to close window !!!" 0:00:06 hide-popup] 
        return 
        space 0 
        box 370x3 edge [size: 1x1 color: sky effect: 'bevel] return 
        scorelist: code 28.52.86 center bold no-wrap 370x100 " " rate 25 para [origin: 0x20] 
        feel [engage: func [face action event] [
                        if action = 'time [face/para/origin: face/para/origin - 0x1 
                                if lesser? second face/para/origin negate second size-text scorelist [face/para/origin: 0x99] 
                                show face]
                ]
        ] return 
        space 8 
        box 370x3 edge [size: 1x1 color: sky effect: 'bevel] return
] 
init-highscore 
history: layout [
        styles btn-styles 
        backdrop effect reduce ['gradient 0x-1 (bg-color - 20) (bg-color - 10)] 
        origin 0x0 
        across 
        pad 20x10 banner "History" 306 ivory - 20 with [feel: none] return 
        pad 20 h-txt: text 294x80 bg-color / 3 bg-color + 40 no-wrap edge [color: (bg-color - 25) size: 2x2 effect: 'ibevel] with [feel: none] 
        pad -8x0 h-sld: slider h-txt/size/y * 0x1 + 16x0 bg-color / 1.5 bg-color - 15 edge [color: (bg-color - 25)] [scroll-slider-text h-txt h-sld] return 
        key keycode [up page-up] [scroll-wheel true -1 h-txt h-sld] 
        key keycode [down page-down] [scroll-wheel true 1 h-txt h-sld] 
        key keycode [home] [scroll-wheel/end true -1 h-txt h-sld] 
        key keycode [end] [scroll-wheel/end true 1 h-txt h-sld] 
        at 330x130 box 20x20 
        at 330x1 small-btn "X" keycode [#"^["] [unview/only history] [unview/only history]
] 
h-txt/text: system/script/header/History 
either any [system/version > 1.3.0 equal? system/product 'Link] [h-sld/pane/1/edge/color: (bg-color - 25)] [h-sld/pane/edge/color: (bg-color - 25)] 
scroll-slider-text h-txt h-sld 
history/feel: make history/feel [
        detect: func [face event /local rc] [
                rc: true 
                switch event/type [
                        scroll-line [scroll-wheel false event/offset/y h-txt h-sld] 
                        scroll-page [scroll-wheel true event/offset/y h-txt h-sld] 
                        key [if found? face: find-key-face face event/key [
                                        if get in face 'action [do-face face event/key] 
                                        rc: false
                                ]
                        ]
                ] 
                if rc [event]
        ]
] 
sendmail: layout [
        styles btn-styles 
        backdrop effect reduce ['gradient 0x-1 (bg-color - 20) (bg-color - 10)] 
        vh2 ivory - 20 reform ["Send email to" system/script/header/Name "author:"] with [feel: none] 
        msg: area "Type your message here ..." 250x60 wrap bg-color + 40 edge [color: (bg-color - 25)] font [color: bg-color / 3] 
        across return 
        btn 80 "Send" "Send ..." [
                unfocus 
                sending: flash "Sending ..." 
                either error? try [
                        hdr: make system/standard/email [subject: reform [system/script/header/Name system/script/header/Version]] 
                        send/header D.Weyand@TGD-Consulting.de msg/text hdr
                ] [
                        unview/only sending 
                        message/color ["E R R O R :" "Error sending email !!!" "Check your REBOL network setup."] red
                ] [
                        unview/only sending 
                        message/color/timeout ["O K A Y" "Your email has been sent!" "Thanx 4 Your message."] green 0:00:06 
                        hide-popup 
                        unview/only sendmail
                ]
        ] [
                unfocus 
                sending: flash "Sending ..." 
                either error? try [
                        hdr: make system/standard/email [subject: reform [system/script/header/Name system/script/header/Version "(" user-prefs/name ")"]] 
                        send/header D.Weyand@TGD-Consulting.de msg/text hdr
                ] [
                        unview/only sending 
                        message/color ["E R R O R :" "Error sending email !!!" "Check your REBOL network setup."] red
                ] [
                        unview/only sending 
                        message/color/timeout ["O K A Y" "Your email has been sent!" "Thanx 4 Your message."] green 0:00:06 
                        hide-popup 
                        unview/only sendmail
                ]
        ] 
        pad 82 btn 80 "Cancel" "Canceled" keycode [#"^["] [unfocus unview/only sendmail] [unfocus unview/only sendmail]
] 
sendmail/feel: make sendmail/feel [
        detect: func [face event /local rc] [
                rc: true 
                switch event/type [
                        scroll-line [scroll-area false event/offset/y msg] 
                        scroll-page [scroll-area true event/offset/y msg] 
                        key [if found? face: find-key-face face event/key [
                                        if get in face 'action [do-face face event/key] 
                                        rc: false
                                ]
                        ]
                ] 
                if rc [event]
        ]
] 
about: layout [
        styles btn-styles 
        backdrop effect bg-effect 
        panel 335x275 bg-color - 25 edge [size: 2x2 color: gray effect: 'bevel] effect reduce ['gradient 0x1 (bg-color - 20) (bg-color - 10)] [
                origin 15x15 
                space 0 
                banner "About ..." 300 ivory - 20 with [feel: none] 
                pad 0x5 
                panel 300x205 edge [size: 1x1 effect: 'ibevel color: bg-color - 25] [
                        style link text bold font [colors: reduce [0.0.0 (bg-color / 4)]] 
                        backdrop (bg-color + 40) effect reduce ['gradient 0x1 (bg-color + 25) (bg-color + 40)] 
                        origin 23 
                        across 
                        at 23x10 
                        pa-hd1: h2 underline form system/script/header/Name (bg-color / 2.7) with [feel: none] 
                        pa-hd2: h2 reform ["Version:" system/script/header/Version] (bg-color / 2.7) font [colors: reduce [(bg-color / 2.7) (bg-color / 4)]] [unfocus view/kf/new/options center-face history [no-title]] return 
                        space 0 
                        box 250x3 edge [size: 1x1 color: bg-color effect: 'bevel] return 
                        credits: text (bg-color / 2.7) center bold no-wrap 250x80 rate 25 para [origin: 0x10] 
                        feel [engage: func [face action event] [
                                        if action = 'time [
                                                face/para/origin: face/para/origin - 0x1 
                                                if lesser? second face/para/origin negate second size-text credits [face/para/origin: 0x70] 
                                                show face]
                                ]
                        ] return 
                        space 8 
                        box 250x3 edge [size: 1x1 color: bg-color effect: 'bevel] return 
                        space 0 
                        pad 15 text (bg-color / 2.7) bold "written by" with [feel: none] 
                        link (bg-color / 2.5) system/script/header/Author [unfocus sendmail/offset: about/offset + 200x220 view/kf/new/options sendmail [no-title]] return 
                        pad 15 text (bg-color / 2.7) bold reform ["Copyright" copydate ","] with [feel: none] 
                        space 8 link (bg-color / 2.7) system/script/header/Rights [
                                unfocus 
                                if request ["Connect to the homepage of TGD-Consulting ?" "Browse" "Cancel"] [
                                        error? try [browse system/script/header/Home]
                                ]
                        ] return 
                        pad 15 text (bg-color / 2.7) bold no-wrap reform ["Updated: " modified? system/options/script] with [feel: none] return
                ] 
                at 290x1 
                small-btn "?" keycode [#"?"] [view/kf/new/options center-face history [no-title]] [view/kf/new/options center-face history [no-title]] 
                at 311x1 
                small-btn "X" keycode [#"^["] [unview/only about] [unview/only about]
        ]
] 
xsize: to integer! ((300 - (first pa-hd2/offset + first pa-hd2/size - first pa-hd1/offset)) / 2) 
pa-hd2/offset: to pair! join xsize + first pa-hd2/offset - first pa-hd1/offset ["x" second pa-hd2/offset] 
pa-hd1/offset: to pair! join xsize ["x" second pa-hd1/offset] 
show [pa-hd1 pa-hd2] 
credits/text: {
- - - - - -
} 
insert credits/text form system/script/header/Comment 
insert credits/text reform [">>> " system/script/Header/Name " <<<" newline] 
insert credits/text {
\|/
@ @
----------oOO-(_)-OOo----------
-= T G D =-
is proud to
present
} 
either ulf [
        insert tail credits/text reform ["This software is registered to" newline licensee "."] 
        if date? expiry [
                insert tail credits/text reform [newline "Your license will expire at" newline expiry "!"]
        ]
] [
        either all [value? 'expiry date? expiry] [insert tail credits/text reform ["This software has been registered to" newline licensee "," newline "but your license expired !" newline ]
        ] [
                insert tail credits/text {This software is not registered yet
and runs in D E M O - mode only !
}
        ] 
        insert tail credits/text reform ["^/To register and run the full version of" 
                newline system/script/Header/Name {, contact TGD-Consulting
at the following email address :
info@TGD-Consulting.de}]
] 
insert tail credits/text "^/^/- - - - - -" 
lay-main: layout [
        styles btn-styles 
        style ld led edge [size: 1x1 color: gray + 30] feel [
                redraw: func [f a p] [
                        either f/data [
                                f/color: f/colors/1 
                                clear f/effect 
                                f/edge/effect: 'bevel
                        ] [
                                f/color: f/colors/2 
                                insert f/effect 'cross 
                                f/edge/effect: 'ibevel
                        ]
                ] 
                detect: none 
                over: none 
                engage: func [f a e] [
                        if all [game-over found? select [up alt-up] a] [beginne-Spiel]
                ]
        ] 
        backdrop effect bg-effect 
        across 
        vh1 224 system/script/header/title ivory - 20 rate 0:01:30 feel [
                engage: func [face action event] [
                        if all [not ulf not game-over equal? action 'time] [
                                message/color reduce [reform [system/script/Header/Name "D E M O - V E R S I O N !"] reform ["If you like to play without interruption:"] reform ["Contact" system/script/Header/Rights " & request a license-key."]] orange
                        ]
                ]
        ] return 
        panel 224x224 edge [size: 2x2 color: gray effect: 'ibevel] feel [
                engage: func [f a e] [
                        if all [game-over found? select [up alt-up] a] [beginne-Spiel]
                ]
        ] [
                backcolor bg-color + 40 
                style bx box 40x40 center middle no-wrap edge [size: 1x1 color: gray - 80] font [size: 32 shadow: none color: gray - 80 colors/1: color] feel [
                        over: func [f a e] [
                                either a [if empty? f/text [f/edge/color: orange show f f/edge/color: gray - 80]] [show f]
                        ] 
                        engage: func [f a e] [
                                if all [started empty? f/text found? select [up alt-up] a] [
                                        insert f/text f/data 
                                        f/edge/size: 0x0 
                                        either equal? f/data pick Spiel index [
                                                index: index + 1 
                                                show f 
                                                score: score + 1 
                                                clear sc-txt/text 
                                                insert sc-txt/text score 
                                                show sc-txt 
                                                if greater? index length? Spiel [
                                                        stoppe-Zeit 
                                                        wait 1 
                                                        Stufe: next Stufe 
                                                        beginne-Spiel
                                                ]
                                        ] [
                                                stoppe-Zeit 
                                                f/edge/color: red 
                                                f/effect: [cross] 
                                                show f 
                                                Brainiacs: Brainiacs + 1 
                                                switch Brainiacs [
                                                        1 [b1/data: false show b1] 
                                                        2 [b2/data: false show b2] 
                                                        3 [b3/data: false show b3]
                                                ] 
                                                started: false 
                                                zeige-Spiel 
                                                wait 2.5 
                                                either greater-or-equal? Brainiacs MaxMist [
                                                        game-over: true 
                                                        message/color ["G A M E - O V E R:" "Train your brain !!!" "Start all over again ..."] orange 
                                                        update-highscore score copy spielername/text to time! time 
                                                        if ulf [save-file]
                                                ] [
                                                        Stufe: back Stufe 
                                                        beginne-Spiel
                                                ]
                                        ]
                                ]
                        ]
                ] 
                space 0x0 
                c1: bx "" edge [size: 0x0] 
                c2: bx "" edge [size: 0x0] 
                c3: bx "" edge [size: 0x0] 
                c4: bx "" edge [size: 0x0] 
                c5: bx "" edge [size: 0x0] 
                c6: bx "" edge [size: 0x0] 
                c7: bx "" edge [size: 0x0] 
                c8: bx "" edge [size: 0x0] 
                c9: bx "" edge [size: 0x0] 
                c10: bx "" edge [size: 0x0] 
                c11: bx "" edge [size: 0x0] 
                c12: bx "" edge [size: 0x0] 
                c13: bx "" edge [size: 0x0] 
                c14: bx "" edge [size: 0x0] 
                c15: bx "" edge [size: 0x0] 
                c16: bx "" edge [size: 0x0] 
                at 90x224 t1: text 40x40 "" gray - 80 center middle no-wrap font [size: 32] rate 3 edge [size: 1x1 color: gray + 30 effect: 'bevel] effect bg-effect feel [
                        engage: func [f a e /local foo] [
                                if all [count equal? a 'time] [
                                        if empty? f/text [
                                                insert f/text 3 
                                                show f 
                                                while [greater? f/offset/y 188] [f/offset/y: f/offset/y - 1 show f wait 0.01]
                                        ] 
                                        if greater-or-equal? subtract now/time/precise f/data 0:00:01 [
                                                f/data: now/time/precise 
                                                foo: subtract to integer! f/text 1 
                                                clear f/text 
                                                insert f/text foo 
                                                show f 
                                                if zero? foo [
                                                        count: false 
                                                        while [lesser? f/offset/y 224] [f/offset/y: f/offset/y + 1 show f wait 0.01] 
                                                        clear f/text 
                                                        set-Spiel 
                                                        wait 1 
                                                        blank-Spiel 
                                                        begin: now
                                                ]
                                        ]
                                ]
                        ]
                ]
        ] return 
        spielername: field "Your Name" edge [size: 2x2 color: gray] bg-color / 5 center middle bold 80 font [color: orange size: 14] 
        pad -2x6 b1: ld true b2: ld true b3: ld true 
        pad -2x-6 panel 80x24 bg-color / 5 edge [size: 2x2 effect: 'ibevel color: gray] [
                origin 0x0 
                space 0x0 
                across 
                pad 1x0 text 42x20 "Score:" center bold middle no-wrap orange bg-color / 5 font [size: 14] [view/new/options center-face highscore [no-title]] [view/new/options center-face highscore [no-title]] 
                pad -1x0 sc-txt: text 38x20 form score center bold middle no-wrap orange bg-color / 5 font [size: 16] with [feel: none]
        ] return 
        pad 0x-6 lnk-home: text 224 center ivory - 20 no-wrap join "(c) " [copydate " " system/script/header/Rights] with [feel: none] [
                if request ["Connect to the homepage of TGD-Consulting ?" "Browse" "Cancel"] [
                        error? try [browse system/script/header/Home]
                ]
        ] [
                if request ["Connect to the homepage of TGD-Consulting ?" "Browse" "Cancel"] [
                        error? try [browse system/script/header/Home]
                ]
        ] return 
        at 242x2 
        lnk-exit: small-btn "X" keycode [#"^["] [
                if confirm reform ["Do you really want to quit" system/script/title "?"] [shutdown]
        ] [
                if confirm reform ["Do you really want to quit" system/script/title "?"] [shutdown]
        ] 
        pad -48x0 
        small-btn "?" keycode [#"?"] [view/new/title center-face about join "about " system/script/header/Name] [view/new/title center-face about join "about " system/script/header/Name]
] 
lay-main/feel: make lay-main/feel [
        detect: func [face event /local rc] [
                rc: true 
                switch event/type [
                        key [if found? face: find-key-face face event/key [
                                        if get in face 'action [do-face face event/key] 
                                        rc: false
                                ]
                        ] 
                        close [rc: false 
                                either confirm reform ["Do you really want to quit" system/script/title "?"] [shutdown] [view/new/kf lay-main]]
                ] 
                if rc [event]
        ]
] 
stoppe-Zeit: func [
] [time: time + seconds begin now ] 
beginne-Spiel: func [
] [
        if game-over [
                Stufe: head Stufe 
                game-over: false 
                time: score: Brainiacs: 0 
                clear sc-txt/text 
                insert sc-txt/text score 
                show sc-txt 
                b1/data: b2/data: b3/data: true 
                show [b1 b2 b3]
        ] 
        started: false 
        init-Spiel 
        count: true 
        t1/data: now/time/precise
] 
clear-nums: func [/local obj i ] [
        i: 0 
        loop 16 [
                i: i + 1 
                obj: do to word! join 'c i 
                clear obj/text
        ]
] 
size-edges: func [
        val [pair!] 
        /only obj [object!]
] [
        either only [
                obj/edge/size: val
        ] [c1/edge/size: c2/edge/size: c3/edge/size: c4/edge/size: c5/edge/size: c6/edge/size: c7/edge/size: c8/edge/size: c9/edge/size: c10/edge/size: c11/edge/size: c12/edge/size: c13/edge/size: c14/edge/size: c15/edge/size: c16/edge/size: val ]
] 
color-edges: func [
        col [tuple!] 
        /only obj [object!]
] [
        either only [
                obj/edge/color: col
        ] [c1/edge/color: c2/edge/color: c3/edge/color: c4/edge/color: c5/edge/color: c6/edge/color: c7/edge/color: c8/edge/color: c9/edge/color: c10/edge/color: c11/edge/color: c12/edge/color: c13/edge/color: c14/edge/color: c15/edge/color: c16/edge/color: col ]
] 
zeige-Spiel: func [/local obj i lst ] [
        size-edges 0x0 
        lst: copy [] 
        clear lst 
        i: 0 
        loop 16 [
                i: i + 1 
                insert lst to word! join 'c i 
                obj: do first lst 
                if empty? obj/text [insert obj/text obj/data]
        ] 
        show lst
] 
init-Spiel: func [
] [
        if tail? Stufe [Stufe: back Stufe] 
        switch/default first Stufe [
                12 [Spiel: copy random [1 2 3 4 5 6 7 8 9 10 11 12]] 
                14 [Spiel: copy random [1 2 3 4 5 6 7 8 9 10 11 12 13 14]] 
                16 [Spiel: copy random [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]]
        ] [
                Spiel: copy/part random [1 2 3 4 5 6 7 8 9 10] first Stufe
        ] 
        c1/effect: c2/effect: c3/effect: c4/effect: c5/effect: c6/effect: c7/effect: c8/effect: c9/effect: c10/effect: c11/effect: c12/effect: c13/effect: c14/effect: c15/effect: c16/effect: [fit] 
        clear-nums 
        size-edges 1x1 
        color-edges 48.48.48 
        switch length? Spiel [
                4 [c1/offset: 65x65 
                        c2/offset: 115x65 
                        c3/offset: 65x115 
                        c4/offset: 115x115 
                        c5/offset: c6/offset: c7/offset: c8/offset: c9/offset: c10/offset: c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                5 [c1/offset: 35x35 
                        c2/offset: 145x35 
                        c3/offset: 90x90 
                        c4/offset: 35x145 
                        c5/offset: 145x145 
                        c6/offset: c7/offset: c8/offset: c9/offset: c10/offset: c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                6 [c1/offset: 145x35 
                        c2/offset: 90x90 
                        c3/offset: 145x90 
                        c4/offset: 35x145 
                        c5/offset: 90x145 
                        c6/offset: 145x145 
                        c7/offset: c8/offset: c9/offset: c10/offset: c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                7 [c1/offset: 90x35 
                        c2/offset: 145x35 
                        c3/offset: 35x90 
                        c4/offset: 90x90 
                        c5/offset: 145x90 
                        c6/offset: 35x145 
                        c7/offset: 90x145 
                        c8/offset: c9/offset: c10/offset: c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                8 [c1/offset: 15x65 
                        c2/offset: 65x65 
                        c3/offset: 115x65 
                        c4/offset: 165x65 
                        c5/offset: 15x115 
                        c6/offset: 65x115 
                        c7/offset: 115x115 
                        c8/offset: 165x115 
                        c9/offset: c10/offset: c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                9 [c1/offset: 35x35 
                        c2/offset: 90x35 
                        c3/offset: 145x35 
                        c4/offset: 35x90 
                        c5/offset: 90x90 
                        c6/offset: 145x90 
                        c7/offset: 35x145 
                        c8/offset: 90x145 
                        c9/offset: 145x145 
                        c10/offset: c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                10 [c1/offset: 65x35 
                        c2/offset: 115x35 
                        c3/offset: 15x90 
                        c4/offset: 65x90 
                        c5/offset: 115x90 
                        c6/offset: 165x90 
                        c7/offset: 15x145 
                        c8/offset: 65x145 
                        c9/offset: 115x145 
                        c10/offset: 165x145 
                        c11/offset: c12/offset: c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                12 [c1/offset: 15x35 
                        c2/offset: 65x35 
                        c3/offset: 115x35 
                        c4/offset: 165x35 
                        c5/offset: 15x90 
                        c6/offset: 65x90 
                        c7/offset: 115x90 
                        c8/offset: 165x90 
                        c9/offset: 15x145 
                        c10/offset: 65x145 
                        c11/offset: 115x145 
                        c12/offset: 165x145 
                        c13/offset: c14/offset: c15/offset: c16/offset: 300x300
                ] 
                14 [c1/offset: 15x15 
                        c2/offset: 65x15 
                        c3/offset: 165x15 
                        c4/offset: 15x65 
                        c5/offset: 65x65 
                        c6/offset: 115x65 
                        c7/offset: 165x65 
                        c8/offset: 15x115 
                        c9/offset: 65x115 
                        c10/offset: 115x115 
                        c11/offset: 165x115 
                        c12/offset: 15x165 
                        c13/offset: 115x165 
                        c14/offset: 165x165 
                        c15/offset: c16/offset: 300x300
                ] 
                16 [c1/offset: 15x15 
                        c2/offset: 65x15 
                        c3/offset: 115x15 
                        c4/offset: 165x15 
                        c5/offset: 15x65 
                        c6/offset: 65x65 
                        c7/offset: 115x65 
                        c8/offset: 165x65 
                        c9/offset: 15x115 
                        c10/offset: 65x115 
                        c11/offset: 115x115 
                        c12/offset: 165x115 
                        c13/offset: 15x165 
                        c14/offset: 65x165 
                        c15/offset: 115x165 
                        c16/offset: 165x165
                ]
        ] 
        show [c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16]
] 
set-Spiel: func [/local obj i lst ] [
        size-edges 0x0 
        lst: copy [] 
        clear lst 
        for i 1 length? Spiel 1 [
                insert lst to word! join 'c i 
                obj: do first lst 
                insert obj/text obj/data: pick Spiel i
        ] 
        show lst 
        sort Spiel 
        index: 1
] 
blank-Spiel: func [
] [
        clear-nums 
        size-edges 1x1 
        show [c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16] 
        started: true
] 
lay-main/size/y: lnk-home/offset/y + lnk-home/size/y + 2 
lay-main/size/x: lnk-exit/offset/x + lnk-exit/size/x + 2 
either main-offset [lay-main/offset: main-offset] [center-face lay-main] 
view/kf lay-main 
shutdown