times table example
							parent
							
								
									362970e810
								
							
						
					
					
						commit
						f7d138c639
					
				|  | @ -0,0 +1 @@ | ||||||
|  | <img src='https://raw.githubusercontent.com/vlang/v/master/times_table/screenshot.png' width=540> | ||||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 331 KiB | 
|  | @ -0,0 +1,60 @@ | ||||||
|  | import ui | ||||||
|  | import gx | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	WIN_SIZE  = 540 | ||||||
|  | 	MIN       = 1 | ||||||
|  | 	MAX       = 9 | ||||||
|  | 	FONT_SIZE = 30 | ||||||
|  | 	N         = MAX - MIN + 1 | ||||||
|  | 	CELL_SIZE = WIN_SIZE / N | ||||||
|  | 	TEXT_CFG  = gx.TextCfg { color: gx.BLACK, size: FONT_SIZE } | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | fn main() { | ||||||
|  | 	cfg := ui.WinCfg { | ||||||
|  | 		width: WIN_SIZE | ||||||
|  | 		height: WIN_SIZE | ||||||
|  | 		title: 'Times Table' | ||||||
|  | 		draw_fn: draw | ||||||
|  | 	} | ||||||
|  | 	wnd := ui.new_window(cfg) | ||||||
|  | 	for { | ||||||
|  | 		ui.wait_events() | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ui.Window uses native drawing API (Core Graphics, GDI+)
 | ||||||
|  | fn draw() { | ||||||
|  | 	for i := MIN; i <= MAX; i++ { | ||||||
|  | 		y := CELL_SIZE * (i - MIN) | ||||||
|  | 		for j := MIN; j <= MAX; j++ { | ||||||
|  | 			x := CELL_SIZE * (j - MIN) | ||||||
|  | 			// Horizontal header
 | ||||||
|  | 			if i == MIN { | ||||||
|  | 				gx.draw_rect(x, y, CELL_SIZE, CELL_SIZE, gx.rgb(240, 240, 240)) | ||||||
|  | 			} | ||||||
|  | 			// Vertical header
 | ||||||
|  | 			if j == MIN { | ||||||
|  | 				gx.draw_rect(x, y, CELL_SIZE, CELL_SIZE, gx.rgb(240, 240, 240)) | ||||||
|  | 			} | ||||||
|  | 			// Draw the result
 | ||||||
|  | 			if !(i == MIN && j == MIN) { | ||||||
|  | 				res := i * j | ||||||
|  | 				mut text_padding_x := (CELL_SIZE - FONT_SIZE) / 2 - 1 | ||||||
|  | 				text_padding_y := text_padding_x - 3 | ||||||
|  | 				if res < 10 { | ||||||
|  | 					text_padding_x += 9 | ||||||
|  | 				} | ||||||
|  | 				gx.draw_text(x + text_padding_x, y + text_padding_y, res.str(), TEXT_CFG) | ||||||
|  | 			} | ||||||
|  | 			// Vertical lines
 | ||||||
|  | 			if i == MIN { | ||||||
|  | 				gx.draw_line(x, 0, x, WIN_SIZE) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		// Horizontal lines
 | ||||||
|  | 		gx.draw_line(0, y, WIN_SIZE, y) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue