move player
This commit is contained in:
		
							parent
							
								
									9101e0ae6d
								
							
						
					
					
						commit
						62040642eb
					
				| @ -4,4 +4,11 @@ use crate::player::Player; | ||||
| pub struct Game { | ||||
|     pub player: Player, | ||||
|     pub levels: [Level; 25] | ||||
| } | ||||
| 
 | ||||
| impl Game { | ||||
|     pub fn move_player(&mut self, dx: i8, dy: i8) { | ||||
|         // check if move is allowed first
 | ||||
|         self.player.change_position(dx, dy); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										19
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/main.rs
									
									
									
									
									
								
							| @ -23,7 +23,7 @@ mod position; | ||||
| mod level_widget; | ||||
| 
 | ||||
| fn main() -> Result<()> { | ||||
|     let g = Game { | ||||
|     let mut g = Game { | ||||
|         player: Player::new("Teddy Tester", 10), | ||||
|         levels: [Level::new(); 25], | ||||
|     }; | ||||
| @ -62,10 +62,11 @@ fn main() -> Result<()> { | ||||
|                 height: 25, | ||||
|             }; | ||||
|             frame.render_widget( | ||||
|                 Paragraph::new(format!("{}\nHealth: {}/{}", | ||||
|                 Paragraph::new(format!("{}\nHealth: {}/{}\n{}", | ||||
|                                        g.player.get_name(), | ||||
|                                        g.player.get_life(), | ||||
|                                        g.player.get_max_life())) | ||||
|                                        g.player.get_max_life(), | ||||
|                                        g.player.get_position().get_x())) | ||||
|                     .white() | ||||
|                     .on_blue(), | ||||
|                 stats_area, | ||||
| @ -76,6 +77,18 @@ fn main() -> Result<()> { | ||||
|                 if key.kind == KeyEventKind::Press && key.code == KeyCode::Char('q') { | ||||
|                     break; | ||||
|                 } | ||||
|                 if key.kind == KeyEventKind::Press && key.code == KeyCode::Left { | ||||
|                     g.move_player(-1, 0); | ||||
|                 } | ||||
|                 if key.kind == KeyEventKind::Press && key.code == KeyCode::Right { | ||||
|                     g.move_player(1, 0); | ||||
|                 } | ||||
|                 if key.kind == KeyEventKind::Press && key.code == KeyCode::Up { | ||||
|                     g.move_player(0, -1); | ||||
|                 } | ||||
|                 if key.kind == KeyEventKind::Press && key.code == KeyCode::Down { | ||||
|                     g.move_player(0, 1); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -28,6 +28,9 @@ impl Player { | ||||
|     pub fn get_position(&self) -> Position { | ||||
|         self.position | ||||
|     } | ||||
|     pub fn change_position(&mut self, dx: i8, dy: i8) { | ||||
|         self.position.change(dx, dy); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
|  | ||||
| @ -24,4 +24,9 @@ impl Position { | ||||
|     pub fn get_y(&self) -> u16 { | ||||
|         self.y | ||||
|     } | ||||
| 
 | ||||
|     pub fn change(&mut self, dx: i8, dy: i8) { | ||||
|         self.x = ((self.x as i16) + dx as i16) as u16; | ||||
|         self.y = ((self.y as i16) + dy as i16) as u16; | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user