Re: New Thread Re Dos Kal to Don,Dan,Derek

new topic     » goto parent     » topic index » view thread      » older message » newer message

Quick-and-dirty attempt at making it run fullscreen.

Also removed dead coed, made the timer tick 100 times/sec instead of 1000 so as not to suck CPU, and changed-
SPACE: pause
ESC: exit
to be consistent with standard keyboard shortcuts.
And probably a few other minor things (there can only be one WinMain, etc).

-----------------------------------------------------  
---------------------Windows Version  ---------------  
--------------------  Kaleidoscope  -----------------  
--------------------    Version  1.16  --------------  
--------------------      31th July 2010  -----------  
-----------------------------------------------------  
------- Many thanks to Don Cole  
-------                Dan Moyer  
-------                Derek Parnell  
------- Without Their help it would not have been completed  
-----------------------------------------------------------  
------- CoJaBo - Made it fullscreen and fixed various other minor errors 
  
include win32lib.ew  
without warning  
 
atom kersa  
constant  
CXFULL=w32Func(xGetSystemMetrics,{SM_CXSCREEN}),  
CYFULL=w32Func(xGetSystemMetrics,{SM_CYSCREEN}),  
Win  = create(Window,"",0,0,0,CXFULL,CYFULL,{WS_POPUP,WS_DLGFRAME}),  
 
--constants for scaling 
sx=CXFULL/640,sy=CYFULL/520 
-- Create a canvas to draw upon.  
constant canvas =  
    create( Pixmap, "", 0, 0,0, CXFULL, CXFULL, 0 )  
  
constant Timer = 1  
 
kersa = w32Func(xShowCursor,{False})  
  
constant colors = {  
	Black, NavyBlue, Blue, BrightBlue,  
	ForestGreen, Green, Cyan, SkyBlue,  
	BrightGreen, BrightCyan, DarkGray, Eggplant,  
	Red, Magenta, DarkBrown, Olive,  
	Gray, Brown, LightGray, Purple,  
	White, BrightRed, BrightMagenta, Violet,  
	Orange, Pink, Yellow, BrightWhite  }  
  
atom     a,b,c,d,a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3,  
         x,y,x1,y1,xx,yy,xx1,yy1,xxx,yyy,xxx1,yyy1,xxxx,yyyy,xxxx1,yyyy1,  
         lt,tp,rt,bt,lt1,tp1,rt1,bt1,lt2,tp2,rt2,bt2,lt3,tp3,rt3,bt3,  
         kount,kcount,in,kcol  
  
integer segment  
  
procedure init_vars()  
	kount=0  
	kcol=rand(length(colors))  
        kcount=0  
        segment = 0  
  
	lt=0 tp=0 bt=300 rt=405  
	lt1=225 tp1=0 bt1=300 rt1=630  
	lt2=0 tp2=180 bt2=480 rt2=405  
	lt3=225 tp3=180 bt3=480 rt3=630  
  
	x=235 x1=205 y=80 y1=220  
	xx=392 xx1=422 yy=80 yy1=220  
	xxx=235 xxx1=205 yyy=400 yyy1=260  
	xxxx=392 xxxx1=422 yyyy=400 yyyy1=260  
  
	a=1   b=1   c=2   d=1  
	a1=a  b1=b  c1=c  d1=d  
	a2=a  b2=b  c2=c  d2=d  
	a3=a  b3=b  c3=c  d3=d  
	 
	setBackColor(canvas, (colors[rand(length(colors))])) 
  
end procedure  
  
procedure kullar()  
	if kcol >= length(colors) then  
		kcol = rand(length(colors))  
	else  
		if remainder(segment, 30) = 0 then  
			kcol = rand(length(colors))  
		end if  
	end if  
end procedure  
  
procedure val()  
     x-=a y-=b x1-=c y1-=d  
     xx+=a1 yy-=b1 xx1+=c1 yy1-=d1  
     xxx-=a2 yyy+=b2 xxx1-=c2 yyy1+=d2  
     xxxx+=a3 yyyy+=b3 xxxx1+=c3 yyyy1+=d3  
end procedure  
  
procedure xyopp()  
     if  x<lt or  x>rt then a=-a   end if  
     if  y<tp or  y>bt then b=-b   end if  
     if x1<lt or x1>rt then c=-c   end if  
     if y1<tp or y1>bt then d=-d   end if  
end procedure  
  
procedure xyopp2()  
     if  xx<lt1 or  xx>rt1 then a1=-a1   end if  
     if  yy<tp1 or  yy>bt1 then b1=-b1   end if  
     if xx1<lt1 or xx1>rt1 then c1=-c1   end if  
     if yy1<tp1 or yy1>bt1 then d1=-d1   end if  
end procedure  
  
procedure xyopp3()  
     if  xxx<lt2 or  xxx>rt2 then a2=-a2   end if  
     if  yyy<tp2 or  yyy>bt2 then b2=-b2   end if  
     if xxx1<lt2 or xxx1>rt2 then c2=-c2   end if  
     if yyy1<tp2 or yyy1>bt2 then d2=-d2   end if  
end procedure  
  
procedure xyopp4()  
     if  xxxx<lt3 or  xxxx>rt3 then a3=-a3   end if  
     if  yyyy<tp3 or  yyyy>bt3 then b3=-b3   end if  
     if xxxx1<lt3 or xxxx1>rt3 then c3=-c3   end if  
     if yyyy1<tp3 or yyyy1>bt3 then d3=-d3   end if  
end procedure  
  
  
integer stopped  
stopped = 0  
  
procedure WinKey(integer id, integer event, sequence parms)  
	-- Check for key presses.  
	if parms[1] = VK_SPACE then  
		stopped = not stopped  
		if stopped then 
			killTimer( Win, Timer ) 
		else 
			setTimer( Win, Timer, 10 ) 
		end if 
	elsif parms[1] = VK_ESCAPE then  
           closeWindow(Win)  
	   kersa = w32Func(xShowCursor,{True})  
           init_vars()  
	   stopped = 0  
	end if  
  
end procedure  
setHandler(Screen, w32HKeyDown, routine_id("WinKey"))  
  
procedure draw_it(integer id, integer event, sequence parms)  
	-- On each tick of the timer, I draw the next segment of the picture.  
  
	if segment >= 650 then  
         segment=1  
		-- Maximum number of segments already drawn,  
		-- so do nothing.  
		setBackColor(canvas, (colors[rand(length(colors))])) 
                return  
	end if  
  
	segment += 1  
	kount+=1  
	kullar()  
	setPenColor(canvas, colors[kcol])  
	drawLine(canvas,floor(sx*(x+a))		,floor(sy*(y+b))		,floor(sx*(x1+c))		,floor(sy*(y1+d)))  
	drawLine(canvas,floor(sx*(xxx+a2))	,floor(sy*(yyy+b2))		,floor(sx*(xxx1+c2))	,floor(sy*(yyy1+d2)))  
	drawLine(canvas,floor(sx*(xx+a1))	,floor(sy*(yy+b1))		,floor(sx*(xx1+c1))		,floor(sy*(yy1+d1)))  
	drawLine(canvas,floor(sx*(xxxx+a3))	,floor(sy*(yyyy+b3))	,floor(sx*(xxxx1+c3))	,floor(sy*(yyyy1+d3)))  
	val() xyopp() xyopp2() xyopp3() xyopp4()  
  
	-- Force the window to be redrawn.  
	repaintFG(Win)  
end procedure  
setHandler(Win, w32HTimer, routine_id( "draw_it" ))  
  
procedure start_it(integer id, integer event, sequence parms)  
	-- Start the timer ticking at 100 times per second  
	setTimer( Win, Timer, 10 )  
end procedure  
setHandler(Win, w32HActivate, routine_id("start_it"))  
  
  
procedure paint_it(integer id, integer event, sequence parms)  
	-- Whenever the window needs to be repainted,  
	-- copy the picture to the window.  
	copyBlt(Win, 0, 0, canvas)  
  
	-- Refresh the 'help' text.  
--	wPuts( {Win, 10, 10}, "ESC to pause/continue  ENTER to restart")  
  
end procedure  
setHandler(Win, w32HPaint, routine_id("paint_it"))  
 
init_vars()  
WinMain( Win, Maximized)
new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu