View in color | License | Download script | History | Other scripts by: notchent |
30-Apr 16:15 UTC
[0.061] 13.454k
[0.061] 13.454k
herd-the-sheep.rREBOL [
title: "Herd The Sheep Game"
date: 9-feb-2013
file: %herd-the-sheep.r
author: "Nick Antonaccio"
purpose: {
Inspired by the LiveCode "Sheep Herder" game (advertised because it
was conceived and completed within 3 hours, 18 minutes). This quick
implementation took 17 minutes to create, using REBOL :) Also available
at:
http://re-bol.com/examples.txt
}
]
sheep: load to-binary decompress 64#{
eJwB/gMB/P/Y/+AAEEpGSUYAAQEBAGAAYAAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQ
CgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko
/8AACwgAMgAyAQERAP/EABwAAAICAwEBAAAAAAAAAAAAAAUGBAcAAQgCA//EAC8Q
AAEDAgUDAwIGAwAAAAAAAAECAwQFEQAGEiExB0FREyJxFGEygZGhweEWkrH/2gAI
AQEAAD8A6oxAl1BKFBLTjQFiVOK3SkgXtyN7b89sA1zj9Qn1Fo1lStlfiUEi90m4
sbC9hc2OPnHzVGFado65raJg0qQl4WUsEX9l9lflfv4weZqgsEvtrC990gWI8jf4
/XBBpxLraVtkFKhcHG74FylrMl4BTp0FGnQqwANrg/z9iMVj1yeq6aDCpFBiyXmp
ai28plBWRa2lJtwDc/64X+rVYn5faplMpk1UVCmTrQwNPtACAL8jYdvGFqgVGNnd
uPluvSDEqzatcCppTdS7coVuPdtcG4vYd+b9Z1QoDQddW8tlsBThHuWQN1fJx7od
cjtl1mSsIRrugge0D+B/eGe+A6XbtKdd3U97rDm3b9rYikdwDp8nFZ9VsjTsyzo8
+mSGEusshpbbyigEBRIIIB39x2thFyV06zExnqJLqkZlmDDX6gfS8FJWQLiw55ty
O2OhFKSlJUogJHfAOqNtodKWQNRFybnvgu3m+mNNpbcLoWgBKhp4I5xOUNIcba1l
oK0tjwBsR8XvzhH6pCsIy/HmUIul+BKRJW22TdaEhVxYfiFyCR3AOK6yWjOGYa3B
zG4+XI/1CkuI9QpCWSSkjQdrW453GB9QgZ4yxPdq2h1K5inG1COS6VE8EpG3BOnu
LdsWr0zpkih5IhR6q8ovrK3ChZuGtRJ0D7D/ALfE4tlyQhqPqcK1BKbDc+f2vh0F
EpoAH0TJ+5Tc/rjc2M8HS7FQg6gNab2J+/g/1gDMlOxHgl+K6ls8L4F/Hz/WFqVn
mDCr7VJlIeTIft6Ti29KFXvtq87W+SBzjKnnWJErselal/WSPwNobK9rE3JGw2B5
wUL0yYFJbbddA2OhskX22JA+MG8uUaQxIblzA2hQR7UDcgnm/i2GS2Mx4eabebLb
yEuIPKVi4P5YoXrTJoVYr1Iy9Bfgwil4iVPJARHvsU3Hfb9dO43tIrqKZ0/6tRqr
Ulol02fFLJCj6jsa+keoRyR7eR2KvG92Ux6HIgMv0xbLkR1IW2tggoUD3FtsSsZf
GsZjl/OsGJ/mE5v6Vj0zIN0+mLH3eMS+sjLQzzSUBtGkxGgRpFiLcYvPp8wzGyhT
mozTbTSUGyG0hKRcknYffDFjMf/Z5+qx2f4DAAA=
}
movestyle: [
engage: func [f a e] [
if a = 'down [
initial-position: e/offset
remove find f/parent-face/pane f
append f/parent-face/pane f
]
if find [over away] a [
f/offset: f/offset + (e/offset - initial-position)
if overlap? home f [
if find f/parent-face/pane f [
score: score + 1
scoreboard/text: rejoin ["Score: " score]
show scoreboard
screen-count: screen-count + 1
]
remove find f/parent-face/pane f
show screen
if screen-count = count [
screen-count: 0 count: count + 2
new-screen
]
]
]
show f
]
]
make-screen: func [count] [
gui: copy [
size 600x400
backdrop white
at 250x0 scoreboard: text bold 100 rejoin ["Score: " score]
at 250x150 home: box 100x100 "Home" effect [gradient brown red]
style animal image sheep feel movestyle
]
repeat i count [
append gui compose [at (random 550x350) animal]
]
append gui [
box 0x0 rate 0 feel [engage: func [f a e] [if a = 'time [
if (now/time - start-time) > timer [
alert rejoin ["TIME! GAME OVER. Score: " score]
quit
]
]]]
]
]
check-overlap: does [
foreach item1 at screen/pane 5 [
foreach item2 at screen/pane 5 [
if ((item1 <> item2) and (overlap? item1 item2)) [
item1/offset: random 550x350
check-overlap
]
]
]
]
random/seed now/time/precise
score: 0 count: 1 screen-count: 0 timer: 00:00:10
new-screen: does [
unview
make-screen count
screen: layout gui
check-overlap
start-time: now/time
view center-face screen
]
new-screen |