WIP showing clues
This commit is contained in:
		
							parent
							
								
									14fc9693bb
								
							
						
					
					
						commit
						d75277a29d
					
				
							
								
								
									
										31
									
								
								0hh1.p8
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								0hh1.p8
									
									
									
									
									
								
							|  | @ -13,6 +13,7 @@ poke4(0x5700,unpack(split"0x0000.0000,0x0000.0000,0x0202.0202,0x0000.0200,0x0000 | |||
| #include coroutines.lua | ||||
| #include ui.lua | ||||
| #include utils.lua | ||||
| #include bg.lua | ||||
| #include states/menu.lua | ||||
| #include states/loading.lua | ||||
| #include states/game.lua | ||||
|  | @ -20,21 +21,21 @@ poke4(0x5700,unpack(split"0x0000.0000,0x0000.0000,0x0202.0202,0x0000.0200,0x0000 | |||
| 
 | ||||
| __gfx__ | ||||
| 00000000110000000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000171000000001711000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00700700177100001111771100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00077000177710001777777100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00077000177771001777777100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00700700177710001111771100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000171771000001711000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000010171000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000131000000001711000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00700700133100001111771100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00077000133310001777777100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00077000133331001777777100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00700700133310001111771100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000131331000001711000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000010131000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 55505550505050505050505055555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 50555055050505050500050055555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 55505550505050500050505050555055000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 50555055050505050505000555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 55505550505050505050505055555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 50555055050505050500050055000555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 55505550505050500050505050555055000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 50555055050505050505000555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
|  |  | |||
							
								
								
									
										43
									
								
								bg.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								bg.lua
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | |||
| function draw_animated_bg(startx) | ||||
| 	if (amplitude <= 0) return | ||||
| 	startx = startx or 0 | ||||
| 	fillp(0b0101101001011010) | ||||
| 
 | ||||
| 	local color = 4 | ||||
| 	-- vertical lines | ||||
| 	local t = t()+10 | ||||
| 	for i=startx-1,127,11 do | ||||
| 		local a=sin(i*t/512)*amplitude+64 | ||||
| 		local b=cos(i*t/256)*amplitude+64 | ||||
| 		line( | ||||
| 		i, | ||||
| 		a, | ||||
| 		i, | ||||
| 		b , | ||||
| 		color) | ||||
| 	end | ||||
| 
 | ||||
| 	-- horizontal lines | ||||
| 	for i=startx-1,127,11 do | ||||
| 		local a=sin(i*t/512)*amplitude+64 | ||||
| 		local b=cos(i*t/256)*amplitude+64 | ||||
| 		line( | ||||
| 		a, | ||||
| 		i, | ||||
| 		b , | ||||
| 		i, | ||||
| 		color) | ||||
| 	end | ||||
| end | ||||
| 
 | ||||
| local players = { | ||||
| 	{name="alice", hp=5}, | ||||
| 	{name="anemone", hp=10}, | ||||
| } | ||||
| local current_player = players[2] | ||||
| 
 | ||||
| for player in all(players) do | ||||
| 	printh("Hello, my name is "..player.name.."and my hp is"..player.hp) | ||||
| end | ||||
| 
 | ||||
| printh("The active player is "..current_player.name) | ||||
							
								
								
									
										22
									
								
								board.lua
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								board.lua
									
									
									
									
									
								
							|  | @ -402,14 +402,19 @@ function Board.new() | |||
| 		end, | ||||
| 
 | ||||
| 		draw_bg = function(self) | ||||
| 			local w = tile_width | ||||
| 			fillp(▒) | ||||
| 			fillp() | ||||
| 			for k,v in ipairs(tiles) do | ||||
| 				local x,y = self:draw_coords(k) | ||||
| 				rectfill2(x, y, w, w, 1) | ||||
| 				self:draw_bg_tile(k) | ||||
| 			end | ||||
| 		end, | ||||
| 
 | ||||
| 		draw_bg_tile = function(self, k) | ||||
| 			local w = tile_width | ||||
| 			local x,y = self:draw_coords(k) | ||||
| 			rectfill2(x+1, y, w-2, w, 1) | ||||
| 			rectfill2(x, y+1, w, w-2, 1) | ||||
| 		end, | ||||
| 
 | ||||
| 		draw = function(self) | ||||
| 			self:draw_bg() | ||||
| 			local w = tile_width | ||||
|  | @ -423,15 +428,18 @@ function Board.new() | |||
| 			local v = tiles[idx] | ||||
| 			if v > 0 then | ||||
| 				local x,y = self:draw_coords(idx) | ||||
| 				local color = v == BLUE and 12 or 8 | ||||
| 				local color = v == BLUE and 8 or 14 | ||||
| 				if color == 1 then fillp(▒) else fillp(█) end | ||||
| 				if self:is_locked(idx) then | ||||
| 					rectfill2(x, y, w, w, color) | ||||
| 					line(x, y+w-1, x+w-1, y+w-1, v == BLUE and 13 or 2) | ||||
| 					line(x+w-1, y, x+w-1, y+w-1, v == BLUE and 13 or 2) | ||||
| 					line(x, y+w-1, x+w-1, y+w-1, color-1) | ||||
| 					line(x+w-1, y, x+w-1, y+w-1, color-1) | ||||
| 				else | ||||
| 					roundedrect(x, y, w, w, color) | ||||
| 				end | ||||
| 			else | ||||
| 				fillp(█) | ||||
| 				self:draw_bg_tile(idx) | ||||
| 			end | ||||
| 		end, | ||||
| 	} | ||||
|  |  | |||
							
								
								
									
										1
									
								
								globals.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								globals.lua
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| local amplitude = 128 | ||||
							
								
								
									
										3
									
								
								main.lua
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								main.lua
									
									
									
									
									
								
							|  | @ -104,6 +104,9 @@ end | |||
| local create = true | ||||
| 
 | ||||
| function _init() | ||||
| 	pal({[0]=0,128,132,7,136,8,14,137,9,10,131,3,11,1,140,12},1) | ||||
| 	poke(0x5f2e,1) --to keep colors | ||||
| 
 | ||||
| 	printh(" ") | ||||
| 	printh("*************") | ||||
| 	printh(" ") | ||||
|  |  | |||
|  | @ -4,23 +4,26 @@ function state_game() | |||
| 	local selected_id = 1 | ||||
| 	local timer_clue = 0 | ||||
| 
 | ||||
| 	local clues = {} | ||||
| 	local function show_clues() | ||||
| 		local issues = board:get_issues(true) | ||||
| 		clues = {} | ||||
| 		for issue in all(issues) do | ||||
| 			local type, err, row, pos, other = unpack(issue) | ||||
| 			if err == "identical" and count(row,0)>0 then | ||||
| 				goto continue | ||||
| 			end | ||||
| 			printh(type .. " " .. err .. " "  .. pos) | ||||
| 			::continue:: | ||||
| 			add(clues, {type=type, pos=pos, t=0}) | ||||
| 			if err == "identical" then | ||||
| 				add(clues, {type=type, pos=other, t=0}) | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| 
 | ||||
| 	local function draw_selected_tile() | ||||
| 		local x, y = board:draw_coords(selected_id) | ||||
| 		local w = board:get_tile_width() | ||||
| 		fillp(▒) | ||||
| 		rect2(x-1, y-1, w+2, w+2, 6) | ||||
| 		-- fillp(▒) | ||||
| 		rect2(x-1, y-1, w+1, w+1, 6) | ||||
| 		line() | ||||
| 	 	fillp(█) | ||||
| 	end | ||||
| 
 | ||||
|  | @ -36,15 +39,33 @@ function state_game() | |||
| 
 | ||||
| 	local function _draw() | ||||
| 		cls() | ||||
| 		local x,y = board:draw_coords(1) | ||||
| 		draw_animated_bg(x) | ||||
| 
 | ||||
| 		board:draw() | ||||
| 		draw_selected_tile() | ||||
| 
 | ||||
| 		-- draw clues | ||||
| 		for clue in all(clues) do | ||||
| 		palt(0,false) | ||||
| 		palt(5,true) | ||||
| 		local x,y | ||||
| 			if clue.type == "row" then | ||||
| 				x,y = board:draw_coords((clue.pos-1) * board:get_size()+1) | ||||
| 				x=0 | ||||
| 				spr(19, x+clue.t%144, y+1+sin(t())*2) | ||||
| 			else -- col | ||||
| 				x,y = board:draw_coords(clue.pos) | ||||
| 				spr(19, x+2+sin(t())*2, y+clue.t%144) | ||||
| 				y=0 | ||||
| 			end | ||||
| 				pset(x, y, 5) | ||||
| 			clue.t += 1 | ||||
| 		end | ||||
| 		palt() | ||||
| 	end | ||||
| 
 | ||||
| 	local function _update() | ||||
| 		timer_clue += 1 | ||||
| 		if timer_clue % 120 == 0 then | ||||
| 			show_clues() | ||||
| 		end | ||||
| 		local size = board:get_size() | ||||
| 		local x, y = board:idx_xy(selected_id) | ||||
| 		if btnp(UP) then | ||||
|  | @ -59,6 +80,7 @@ function state_game() | |||
| 
 | ||||
| 		if btnp(BTN_O) then | ||||
| 			board:try_flip_tile(selected_id) | ||||
| 			show_clues() | ||||
| 		end | ||||
| 
 | ||||
| 		if (x<1) x=size | ||||
|  |  | |||
|  | @ -58,12 +58,22 @@ function state_loading() | |||
| 			yield() | ||||
| 			repeat | ||||
| 				solved = board:solve_step() | ||||
| 				if solved == "valid" then | ||||
| 					amplitude -= .125 | ||||
| 				end | ||||
| 			until board:is_complete() or solved == "invalid" | ||||
| 
 | ||||
| 			if solved == "invalid" then | ||||
| 				deli(previous) | ||||
| 			end | ||||
| 		end -- end while | ||||
| 		printh("board generated in "..time()-start.." seconds") | ||||
| 		startcoroutine(cocreate(function() | ||||
| 			repeat | ||||
| 				amplitude -= .5 | ||||
| 				yield() | ||||
| 			until amplitude <= 0 | ||||
| 		end)) | ||||
| 
 | ||||
| 		board:set_tiles(previous[#previous]) | ||||
| 		printh(board:tostring()) | ||||
|  | @ -73,7 +83,6 @@ function state_loading() | |||
| 	end) | ||||
| 
 | ||||
| 	local function draw_tiles(board) | ||||
| 
 | ||||
| 		local w = board:get_size() | ||||
| 		local tiles = board:get_tiles_copy() | ||||
| 		for k,v in ipairs(tiles) do | ||||
|  | @ -84,6 +93,7 @@ function state_loading() | |||
| 	end | ||||
| 
 | ||||
| 	local function _enter() | ||||
| 		amplitude = 64 | ||||
| 		loaded = false | ||||
| 
 | ||||
| 		local copy_messages = copy(loading_messages) | ||||
|  | @ -111,17 +121,17 @@ function state_loading() | |||
| 
 | ||||
| 	local function _draw() | ||||
| 		cls() | ||||
| 		board:draw_bg() | ||||
| 		local x,y = board:draw_coords(1) | ||||
| 		draw_animated_bg(x) | ||||
| 		-- board:draw_bg() | ||||
| 		draw_tiles(board) | ||||
| 		local s = board:get_size()*board:get_size() | ||||
| 		local l = print(message, 0, -100) | ||||
| 		local y = 118+(removing_tile/s)*100/8 | ||||
| 		local colors = {7,6,5,5} | ||||
| 		local ci = removing_tile\20+1 | ||||
| 		local c = colors[ci] | ||||
| 		if not loaded then | ||||
| 			rectfill2(0,y-2,127,10,0) | ||||
| 			print(messages_str, messages_x, y, c, 0) | ||||
| 			print(messages_str, messages_x, y, 3, 0) | ||||
| 			-- print(spinner[t()\.25%4+1], 120, 120) | ||||
| 		end | ||||
| 	end | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user