aUCBLogo Demos and Tests / cursorgame


be cursorgame
   
maxx=80
   
maxy=30
   
score=0
   
pluses=0
   
minuses=0
   
init
   
p=list int maxx/2  int maxy/2
   
v=list 1 0
   
running=true
   
while [running]
   
[   setCursor p
      
setTextColor black yellow
      
type "X
      
waitms 100
      
setCursor p
      
setTextColor white black
      
type "\ 
      
if key?
      
[   k=rawASCII readChar
         
if k==27 [running=false]
         
if k==255 
         
[   k=readCharExt
            
v=case k
            
[   [WXK_LEFT  list -1  0]
               
[WXK_RIGHT list  1  0]
               
[WXK_UP    list  -1]
               
[WXK_DOWN  list  0  1]
               
[else v]
            
]
         
]
      
]
      
p=p+v
      
if (or (first p) < 0      (last p) < 1  
             
(first p) > maxx-(last p) > maxy)
      
[   p=p-v 
         
v=(list 0 0)-v
      
]
      
setCursor p
      
c=CharUnderCursor
      
case c
      
[   ["#   p=p-v   v=(list 0 0)-v]
         
["+   score=score+100   pluses=pluses-1
          
playWave init::wavPlus 1   
         
]
         
["- score=score-100   minuses=minuses-1
          
playWave init::wavMinus 1   
         
]
         
[else score=score-1]
      
]
      
prsc
      
if or pluses==0  minuses==[running=false]
   
]
   
setCursor list int maxx/2-18 int maxy/2
   
(type [\ \ \ \ \ \ \ \ Final Score was:score [\ \ \ \ \ \ \ \ ])
   
setCursor list maxy+2
   
pr "cursorgame
   
notFullScreen

   
be setc
      
setTextColor white black
   
end
   
   
be init
      
allFullScreen
      
TextScreen
      
clearText
      
setTextFont [Courier New]
      
boldTextMode
      
setTextSize 17
      
::black=RGB 0 0 0
      
::white=RGB 1 1 1
      
::red=RGB 1 0 0
      
::green=RGB 0 1 0
      
::blue=RGB 0 0 1
      
::yellow=RGB 1 1 0
      
setc
      
str "\  maxx
      
(pr)
      
repeat maxy 
      
[   repeat maxx
         
[   ifelse rnd 0.1
            
[   ifelse rnd 0.25
               
[   ifelse rnd 0.5
                  
[   setTextColor yellow blue
                     
type "-   minuses=minuses+1
                     
setc
                  
][   setTextColor green red
                     
type "+   pluses=pluses+1
                     
setc
                  
]
               
][   setTextColor black white
                  
type "#
                  
setc
               
]
            
][   type "\ 
            
]
         
]
         
(pr)
      
]
      
setc
      
overwriteMode
      
ifelse LogoVersion.3 == "Linux  
      
[   wavPlus=[/usr/share/sounds/KDE_Click.wav]
         
wavMinus=[/usr/share/sounds/KDE_Click.wav]
      ][  
ifelse SubString? "Windows LogoVersion.3
         
[   wavPlus="C:\Windows\Media\Ding.wav
            
wavMinus="C:\Windows\Media\Chord.wav
         
][  wavPlus=[]
            
wavMinus=[]
         ]
      ]

   
end
   
   
be prsc
      
setCursor list int maxx/2-6 0 
      
setTextColor yellow black
      
(type [Score:score [\ \ \ \ \ ])
   
end
   
   
be str c n
      
repeat [type c]
   
end
end