mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Improve Turing sample (#3040)
* Improve Turing sample * Move more complex sample to different file * Undo changes to original file
This commit is contained in:
		
				
					committed by
					
						 Arfon Smith
						Arfon Smith
					
				
			
			
				
	
			
			
			
						parent
						
							cbbc05f7b8
						
					
				
				
					commit
					baf56666d4
				
			
							
								
								
									
										662
									
								
								samples/Turing/simplegame.t
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										662
									
								
								samples/Turing/simplegame.t
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,662 @@ | |||||||
|  | %This is a comment | ||||||
|  | var x : array 0 .. 100 of int  | ||||||
|  | var rangeX, rangeY, loopFor : int := 0 | ||||||
|  | setscreen ("graphics:696;400,nobuttonbar") | ||||||
|  | setscreen ("nocursor") | ||||||
|  | setscreen ("noecho") | ||||||
|  | var colourP : string := "Yellow" | ||||||
|  | var title : int := Font.New ("Algerian:60") | ||||||
|  | var subtitle : int := Font.New ("Algerian:20") | ||||||
|  | var xValue, yValue, font1, font2, instructionsTitle : int | ||||||
|  | var scoreR, scoreY, button : int := 0 | ||||||
|  | var scoreRS, scoreYS, PreventFor : string | ||||||
|  | var win : string := "N" | ||||||
|  | var full, samePlayer : boolean := false | ||||||
|  | font1 := Font.New ("Algerian:20") | ||||||
|  | font2 := Font.New ("TimesNewRoman:15") | ||||||
|  | instructionsTitle := Font.New ("Algerian:35") | ||||||
|  | var shouldPlay : boolean := true | ||||||
|  | forward proc game | ||||||
|  | for i : 0 .. 100   | ||||||
|  |     x (i) := 0 | ||||||
|  | end for | ||||||
|  | proc pauseProgram | ||||||
|  |     var reply : string (1) | ||||||
|  |     getch (reply) | ||||||
|  | end pauseProgram | ||||||
|  | process backgroundMusic | ||||||
|  |     loop | ||||||
|  | 	exit when shouldPlay = false | ||||||
|  | 	Music.PlayFile ("music.MP3") | ||||||
|  |     end loop | ||||||
|  | end backgroundMusic | ||||||
|  | proc winner | ||||||
|  |     cls | ||||||
|  |     win := "N" | ||||||
|  |     for i : 1 .. 100 | ||||||
|  | 	x (i) := 0 | ||||||
|  |     end for | ||||||
|  |     drawfillbox (0, 0, 696, 400, black) | ||||||
|  |     scoreRS := "Red Wins: " + intstr (scoreR) | ||||||
|  |     scoreYS := "Yellow Wins: " + intstr (scoreY) | ||||||
|  |     Font.Draw ("", 190, 320, title, 48) | ||||||
|  |     Font.Draw (scoreRS, 0, 250, font1, 52) | ||||||
|  |     Font.Draw (scoreYS, 0, 220, font1, 52) | ||||||
|  |     Font.Draw ("Press any Key to continue.", 180, 100, subtitle, 12) | ||||||
|  |     pauseProgram | ||||||
|  |     game | ||||||
|  | end winner | ||||||
|  | body proc game | ||||||
|  |     for i : 1 .. 100 | ||||||
|  | 	x (i) := 0 | ||||||
|  |     end for | ||||||
|  |     cls | ||||||
|  |     drawfillbox (0, 0, 700, 400, black)%Grid | ||||||
|  |     Draw.ThickLine (0, 400, 0, 0, 5, 48) | ||||||
|  |     Draw.ThickLine (696, 400, 696, 0, 5, 48) | ||||||
|  |     Draw.ThickLine (3, 0, 696, 0, 5, 48) | ||||||
|  |     Draw.ThickLine (696, 0, 696, 70, 5, 48) | ||||||
|  |     Draw.ThickLine (610, 70, 87, 70, 5, 48) | ||||||
|  |     Draw.ThickLine (87, 70, 87, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (87, 400, 0, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (173, 70, 173, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (260, 70, 260, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (347, 70, 347, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (435, 70, 435, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (521, 70, 521, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (609, 70, 609, 400, 5, 48) | ||||||
|  |     Draw.ThickLine (0, 70, 87, 70, 2, 11) %NEW! | ||||||
|  |     Draw.ThickLine (0, 120, 87, 120, 2, 11) | ||||||
|  |     Draw.ThickLine (0, 170, 87, 170, 2, 11) | ||||||
|  |     Draw.ThickLine (0, 220, 87, 220, 2, 11) | ||||||
|  |     Draw.ThickLine (0, 270, 87, 270, 2, 11) | ||||||
|  |     Draw.ThickLine (0, 320, 87, 320, 2, 11) | ||||||
|  |     Draw.ThickLine (0, 370, 87, 370, 2, 11) | ||||||
|  |     Draw.ThickLine (609, 70, 696, 70, 2, 11) %Part 2 | ||||||
|  |     Draw.ThickLine (609, 120, 696, 120, 2, 11) | ||||||
|  |     Draw.ThickLine (609, 170, 696, 170, 2, 11) | ||||||
|  |     Draw.ThickLine (609, 220, 696, 220, 2, 11) | ||||||
|  |     Draw.ThickLine (609, 270, 696, 270, 2, 11) | ||||||
|  |     Draw.ThickLine (609, 320, 696, 320, 2, 11) | ||||||
|  |     Draw.ThickLine (609, 370, 696, 370, 2, 11) | ||||||
|  |     loop | ||||||
|  | 	if colourP = "Yellow" then | ||||||
|  | 	    if button = 1 then | ||||||
|  | 		if (rangeX >= 87 and rangeX <= 173) then | ||||||
|  | 		    %Drop on right corner (now verifies height) | ||||||
|  | 		    if x (1) = 0 then | ||||||
|  | 			x (1) := 1 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (2) = 0 then | ||||||
|  | 			x (2) := 1 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (3) = 0 then | ||||||
|  | 			x (3) := 1 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (4) = 0 then | ||||||
|  | 			x (4) := 1 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (5) = 0 then | ||||||
|  | 			x (5) := 1 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (6) = 0 then | ||||||
|  | 			x (6) := 1 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (135, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (135, 400 - i, 25, 25, yellow) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 174 and rangeX <= 260) then | ||||||
|  | 		    if x (7) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (7) := 1 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (8) = 0 then | ||||||
|  | 			x (8) := 1 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (9) = 0 then | ||||||
|  | 			x (9) := 1 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (10) = 0 then | ||||||
|  | 			x (10) := 1 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (11) = 0 then | ||||||
|  | 			x (11) := 1 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (12) = 0 then | ||||||
|  | 			x (12) := 1 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (222, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (222, 400 - i, 25, 25, yellow) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 261 and rangeX <= 347) then | ||||||
|  | 		    if x (13) = 0 then%Drop on right corner (now verifies height) | ||||||
|  | 			x (13) := 1 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (14) = 0 then | ||||||
|  | 			x (14) := 1 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (15) = 0 then | ||||||
|  | 			x (15) := 1 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (16) = 0 then | ||||||
|  | 			x (16) := 1 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (17) = 0 then | ||||||
|  | 			x (17) := 1 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (18) = 0 then | ||||||
|  | 			x (18) := 1 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (309, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (309, 400 - i, 25, 25, yellow) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 348 and rangeX <= 434) then | ||||||
|  | 		    if x (19) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (19) := 1 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (20) = 0 then | ||||||
|  | 			x (20) := 1 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (21) = 0 then | ||||||
|  | 			x (21) := 1 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (22) = 0 then | ||||||
|  | 			x (22) := 1 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (23) = 0 then | ||||||
|  | 			x (23) := 1 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (24) = 0 then | ||||||
|  | 			x (24) := 1 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (396, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (396, 400 - i, 25, 25, yellow) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 435 and rangeX <= 521) then | ||||||
|  | 		    if x (25) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (25) := 1 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (26) = 0 then | ||||||
|  | 			x (26) := 1 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (27) = 0 then | ||||||
|  | 			x (27) := 1 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (28) = 0 then | ||||||
|  | 			x (28) := 1 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (29) = 0 then | ||||||
|  | 			x (29) := 1 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (30) = 0 then | ||||||
|  | 			x (30) := 1 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (483, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (483, 400 - i, 25, 25, yellow) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 522 and rangeX <= 609) then | ||||||
|  | 		    if x (31) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (31) := 1 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (32) = 0 then | ||||||
|  | 			x (32) := 1 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (33) = 0 then | ||||||
|  | 			x (33) := 1 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (34) = 0 then | ||||||
|  | 			x (34) := 1 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (35) = 0 then | ||||||
|  | 			x (35) := 1 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (36) = 0 then | ||||||
|  | 			x (36) := 1 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (570, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (570, 400 - i, 25, 25, yellow) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		end if | ||||||
|  | 		if samePlayer = true then | ||||||
|  | 		    samePlayer := false | ||||||
|  | 		else | ||||||
|  | 		    colourP := "Red" | ||||||
|  | 		end if | ||||||
|  | 	    end if | ||||||
|  | 	else | ||||||
|  | 	    if button = 1 then | ||||||
|  | 		if (rangeX >= 87 and rangeX <= 173) then | ||||||
|  | 		    if x (1) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (1) := 2 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (2) = 0 then | ||||||
|  | 			x (2) := 2 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (3) = 0 then | ||||||
|  | 			x (3) := 2 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (4) = 0 then | ||||||
|  | 			x (4) := 2 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (5) = 0 then | ||||||
|  | 			x (5) := 2 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (6) = 0 then | ||||||
|  | 			x (6) := 2 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (135, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (135, 400 - i, 25, 25, 12) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 174 and rangeX <= 260) then | ||||||
|  | 		    if x (7) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (7) := 2 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (8) = 0 then | ||||||
|  | 			x (8) := 2 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (9) = 0 then | ||||||
|  | 			x (9) := 2 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (10) = 0 then | ||||||
|  | 			x (10) := 2 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (11) = 0 then | ||||||
|  | 			x (11) := 2 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (12) = 0 then | ||||||
|  | 			x (12) := 2 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (222, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (222, 400 - i, 25, 25, 12) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 261 and rangeX <= 347) then | ||||||
|  | 		    if x (13) = 0 then %Drop on right corner (now verifies height) | ||||||
|  | 			x (13) := 2 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (14) = 0 then | ||||||
|  | 			x (14) := 2 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (15) = 0 then | ||||||
|  | 			x (15) := 2 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (16) = 0 then | ||||||
|  | 			x (16) := 2 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (17) = 0 then | ||||||
|  | 			x (17) := 2 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (18) = 0 then | ||||||
|  | 			x (18) := 2 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (309, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (309, 400 - i, 25, 25, 12) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 348 and rangeX <= 434) then | ||||||
|  | 		    %Drop on right corner (now verifies height) | ||||||
|  | 		    if x (19) = 0 then | ||||||
|  | 			x (19) := 2 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (20) = 0 then | ||||||
|  | 			x (20) := 2 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (21) = 0 then | ||||||
|  | 			x (21) := 2 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (22) = 0 then | ||||||
|  | 			x (22) := 2 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (23) = 0 then | ||||||
|  | 			x (23) := 2 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (24) = 0 then | ||||||
|  | 			x (24) := 2 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (396, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (396, 400 - i, 25, 25, 12) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 435 and rangeX <= 521) then | ||||||
|  | 		    %Drop on right corner (now verifies height) | ||||||
|  | 		    if x (25) = 0 then | ||||||
|  | 			x (25) := 2 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (26) = 0 then | ||||||
|  | 			x (26) := 2 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (27) = 0 then | ||||||
|  | 			x (27) := 2 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (28) = 0 then | ||||||
|  | 			x (28) := 2 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (29) = 0 then | ||||||
|  | 			x (29) := 2 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (30) = 0 then | ||||||
|  | 			x (30) := 2 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (483, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (483, 400 - i, 25, 25, 12) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		elsif (rangeX >= 522 and rangeX <= 609) then | ||||||
|  | 		    %Drop on right corner (now verifies height) | ||||||
|  | 		    if x (31) = 0 then | ||||||
|  | 			x (31) := 2 | ||||||
|  | 			loopFor := 300 | ||||||
|  | 		    elsif x (32) = 0 then | ||||||
|  | 			x (32) := 2 | ||||||
|  | 			loopFor := 250 | ||||||
|  | 		    elsif x (33) = 0 then | ||||||
|  | 			x (33) := 2 | ||||||
|  | 			loopFor := 200 | ||||||
|  | 		    elsif x (34) = 0 then | ||||||
|  | 			x (34) := 2 | ||||||
|  | 			loopFor := 150 | ||||||
|  | 		    elsif x (35) = 0 then | ||||||
|  | 			x (35) := 2 | ||||||
|  | 			loopFor := 100 | ||||||
|  | 		    elsif x (36) = 0 then | ||||||
|  | 			x (36) := 2 | ||||||
|  | 			loopFor := 50 | ||||||
|  | 		    else | ||||||
|  | 			full := true | ||||||
|  | 			samePlayer := true | ||||||
|  | 		    end if | ||||||
|  | 		    if full = true then | ||||||
|  | 			full := false | ||||||
|  | 		    else | ||||||
|  | 			for i : 1 .. loopFor | ||||||
|  | 			    drawfilloval (570, 401 - i, 25, 25, black) | ||||||
|  | 			    drawfilloval (570, 400 - i, 25, 25, 12) | ||||||
|  | 			    delay (1) | ||||||
|  | 			end for | ||||||
|  | 		    end if | ||||||
|  | 		end if | ||||||
|  | 		if samePlayer then | ||||||
|  | 		    samePlayer := false | ||||||
|  | 		else | ||||||
|  | 		    colourP := "Yellow" | ||||||
|  | 		end if | ||||||
|  |  | ||||||
|  | 	    end if | ||||||
|  | 	end if | ||||||
|  | 	mousewhere (rangeX, rangeY, button) | ||||||
|  | 	%Detect Winner - Horizontal Verification | ||||||
|  | 	for i : 1 .. 18 | ||||||
|  | 	    if (x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = x (i + 18) and x (i) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" %Red | ||||||
|  | 	    elsif x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = x (i + 18) and x (i) = 2 then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 		if i > 6 then | ||||||
|  | 		    if x (i - 6) = x (i) and x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = 2 then | ||||||
|  | 			scoreR := scoreR + 1 %Yellow | ||||||
|  | 			win := "Y" | ||||||
|  | 		    elsif x (i - 6) = x (i) and x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = 1 then | ||||||
|  | 			scoreY := scoreY + 1 %Yellow | ||||||
|  | 			win := "Y" | ||||||
|  | 		    end if | ||||||
|  | 		end if | ||||||
|  | 	    end if | ||||||
|  | 	end for | ||||||
|  | 	%Verticle Detection | ||||||
|  | 	for i : 1 .. 36 by 6 | ||||||
|  | 	    if (x (i) = x (i + 1) and x (i) = x (i + 2) and x (i) = x (i + 3) and x (i) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i) = x (i + 1) and x (i) = x (i + 2) and x (i) = x (i + 3) and x (i) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 1) = x (i + 2) and x (i + 1) = x (i + 3) and x (i + 1) = x (i + 4) and x (i + 1) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 1) = x (i + 2) and x (i + 1) = x (i + 3) and x (i + 1) = x (i + 4) and x (i + 1) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 2) = x (i + 3) and x (i + 2) = x (i + 4) and x (i + 2) = x (i + 5) and x (i + 2) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 2) = x (i + 3) and x (i + 2) = x (i + 4) and x (i + 2) = x (i + 5) and x (i + 2) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    end if | ||||||
|  | 	end for | ||||||
|  | 	for i : 1 .. 36 %Positive Slope | ||||||
|  | 	    if (x (i) = x (i + 7) and x (i) = x (i + 14) and x (i) = x (i + 21) and x (i) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i) = x (i + 7) and x (i) = x (i + 14) and x (i) = x (i + 21) and x (i) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 1) = x (i + 8) and x (i + 1) = x (i + 15) and x (i + 1) = x (i + 22) and x (i + 1) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 1) = x (i + 8) and x (i + 1) = x (i + 15) and x (i + 1) = x (i + 22) and x (i + 1) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 2) = x (i + 9) and x (i + 2) = x (i + 16) and x (i + 2) = x (i + 23) and x (i + 2) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (i + 2) = x (i + 9) and x (i + 2) = x (i + 16) and x (i + 2) = x (i + 23) and x (i + 2) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (1) = x (7) and x (1) = x (13) and x (1) = x (19) and x (1) = 1) then | ||||||
|  | 		scoreY := scoreY + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    elsif (x (1) = x (7) and x (1) = x (13) and x (1) = x (19) and x (1) = 2) then | ||||||
|  | 		scoreR := scoreR + 1 | ||||||
|  | 		win := "Y" | ||||||
|  | 	    end if | ||||||
|  | 	end for | ||||||
|  | 	for i : 1 .. 70 %Negative Slope | ||||||
|  | 	    if i > 24 then | ||||||
|  | 		if (x (i) = x (i - 5) and x (i) = x (i - 10) and x (i) = x (i - 15) and x (i) = 1) then | ||||||
|  | 		    scoreY := scoreY + 1 | ||||||
|  | 		    win := "Y" | ||||||
|  | 		elsif (x (i) = x (i - 5) and x (i) = x (i - 10) and x (i) = x (i - 15) and x (i) = 2) then | ||||||
|  | 		    scoreR := scoreR + 1 | ||||||
|  | 		    win := "Y" | ||||||
|  | 		elsif (x (i + 1) = x (i - 6) and x (i - 1) = x (i - 11) and x (i - 1) = x (i - 16) and x (i + 1) = 2) then | ||||||
|  | 		    scoreR := scoreR + 1 | ||||||
|  | 		    win := "Y" | ||||||
|  | 		elsif (x (i + 1) = x (i - 6) and x (i - 1) = x (i - 11) and x (i - 1) = x (i - 16) and x (i + 1) = 1) then | ||||||
|  | 		    scoreY := scoreY + 1 | ||||||
|  | 		    win := "Y" | ||||||
|  | 		elsif (x (i + 2) = x (i - 7) and x (i - 2) = x (i - 12) and x (i - 2) = x (i - 17) and x (i + 2) = 1) then | ||||||
|  | 		    scoreY := scoreY + 1 | ||||||
|  | 		    win := "Y" | ||||||
|  | 		elsif (x (i + 2) = x (i - 7) and x (i + 2) = x (i - 12) and x (i - 2) = x (i - 17) and x (i + 2) = 2) then | ||||||
|  | 		    scoreR := scoreR + 1 | ||||||
|  | 		    win := "Y" | ||||||
|  | 		end if | ||||||
|  | 	    end if | ||||||
|  | 	end for | ||||||
|  | 	exit when win = "Y" | ||||||
|  |     end loop | ||||||
|  |     winner | ||||||
|  | end game | ||||||
|  | proc mainMenu | ||||||
|  |     drawfillbox (0, 0, 696, 400, black) | ||||||
|  |     Font.Draw ("", 295, 220, font1, 48) | ||||||
|  |     Font.Draw ("", 251, 150, font1, 48) | ||||||
|  |     Font.Draw ("", 305, 79, font1, 48) | ||||||
|  |     loop | ||||||
|  | 	Font.Draw ("Connect4", 155, 290, title, 52) | ||||||
|  | 	Mouse.Where (xValue, yValue, button) | ||||||
|  | 	if xValue >= 215 and xValue <= 455 then | ||||||
|  | 	    if yValue >= 200 and yValue <= 250 then | ||||||
|  | 		if button = 1 then | ||||||
|  | 		    delay (1000) | ||||||
|  | 		    game | ||||||
|  | 		    exit | ||||||
|  | 		end if | ||||||
|  | 		drawbox (215, 200, 455, 250, 48) | ||||||
|  | 	    else | ||||||
|  | 		drawbox (215, 200, 455, 250, black) | ||||||
|  | 	    end if | ||||||
|  | 	    if yValue >= 130 and yValue <= 180 then | ||||||
|  | 		if button = 1 then | ||||||
|  | 		    drawfillbox (0, 0, 696, 400, black) | ||||||
|  | 		    Font.Draw ("", 70, 350, instructionsTitle, 48) | ||||||
|  | 		    Font.Draw ("", 0, 320, font2, 52) | ||||||
|  | 		    Font.Draw ("", 0, 280, font2, 52) | ||||||
|  | 		    Font.Draw ("", 0, 240, font2, 52) | ||||||
|  | 		    Font.Draw ("", 0, 200, font2, 52) | ||||||
|  | 		    Font.Draw ("", 245, 75, font2, 14) | ||||||
|  | 		    pauseProgram | ||||||
|  | 		    mainMenu | ||||||
|  | 		end if | ||||||
|  | 		drawbox (215, 130, 455, 180, 48) | ||||||
|  | 	    else | ||||||
|  | 		drawbox (215, 130, 455, 180, black) | ||||||
|  | 	    end if | ||||||
|  | 	    if yValue >= 60 and yValue <= 110 then | ||||||
|  | 		if button = 1 then | ||||||
|  | 		    shouldPlay := false | ||||||
|  | 		    exit | ||||||
|  | 		end if | ||||||
|  | 		drawbox (215, 60, 455, 110, 48) | ||||||
|  | 	    else | ||||||
|  | 		drawbox (215, 60, 455, 110, black) | ||||||
|  | 	    end if | ||||||
|  | 	end if | ||||||
|  | 	exit when button = 1 | ||||||
|  |     end loop | ||||||
|  | end mainMenu | ||||||
|  | proc intro | ||||||
|  |     drawfillbox (0, 0, 696, 400, black) | ||||||
|  |     for i : 1 .. 400 | ||||||
|  | 	drawfillbox (0, 0, 696, 400, black) | ||||||
|  | 	Font.Draw ("", 560 - i, 250, title, 48) | ||||||
|  | 	Font.Draw ("", -255 + i, 220, subtitle, 52) | ||||||
|  | 	delay (4) | ||||||
|  |     end for | ||||||
|  |     for i : 1 .. 390 | ||||||
|  | 	drawfilloval (40, 401 - i, 20, 20, black) | ||||||
|  | 	drawfilloval (656, 401 - i, 20, 20, black) | ||||||
|  | 	drawfilloval (656, 400 - i, 20, 20, 12) | ||||||
|  | 	drawfilloval (40, 400 - i, 20, 20, yellow) | ||||||
|  | 	delay (3) | ||||||
|  |     end for | ||||||
|  |     loop | ||||||
|  | 	drawfillbox (0, 0, 696, 100, black) | ||||||
|  | 	Font.Draw ("Press any Key to Continue.", 169, 20, subtitle, 12) | ||||||
|  | 	delay (300) | ||||||
|  | 	drawfillbox (0, 0, 696, 100, black) | ||||||
|  | 	Font.Draw ("Press any Key to Continue.", 169, 20, subtitle, 14) | ||||||
|  | 	delay (300) | ||||||
|  | 	exit when hasch | ||||||
|  |     end loop | ||||||
|  |     mainMenu | ||||||
|  | end intro | ||||||
|  | %fork backgroundMusic | ||||||
|  | intro | ||||||
		Reference in New Issue
	
	Block a user