You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

game
- game.Load
- game.Start
- game.Loop
- 初始化 wall,bean,goldBean,player,monster
- 初始化 dir = dir_none
- while(1)
- key = GetKey() // 获取按键输入
- switch(key)
- p pause
- q quit
- w dir_up
- s dir_down
- a dir_left
- d dir_right
- other dir = last_dir
- player.PlayerMove(wall,dir) // 玩家根据按键输入移动
- player.NextMove(dir,nx,ny) //预测下一时刻玩家的坐标
- 根据nxny判断下一时刻玩家是否撞墙
- be careful! you must have to ensure nx or ny is at last one is an integer, if not, you can't move according to the input direction
- ofcourse, you can be a little tolerent, as an example, when the input direction wants to change ny, but nxis not an integer, but , maybe nx is so close to an integer, you can force it converting to an integer, and then change the ny
- if you obey these rules, you can move the player,
- player.Move(dir) //调用函数移动玩家
- clear its image at the old (x,y),
- then set the new (x,y) according( nx, ny), and draw its image at the new (x,y)
- if(player.PlayerMove is successful) //如果上一时刻玩家成功移动(没撞墙)
- player.TryEatBean(bean) // 玩家尝试吃豆子
- include 2 parts ,first , judge player is or not meet a bean,
- then, eat the bean and add player's score, and return true
- if( successful) // 玩家尝试吃豆子成功
- bean.IsEmpty? && goldBean.IsEmpty?
- if(true)
- game over, player win
- player.TryEatGoldBean(goldBean)// 玩家尝试吃金豆子
- include 2 parts, just same as above
- if(successful) // 玩家尝试吃金豆子成功
- bean.IsEmpty? && goldBean.IsEmpty?
- if(true)
- game over, player win
- change all of monster's status
- change all of monster's speed
- monster.TryEatPlayer(player) //怪物尝试吃玩家
- include 2 part, first, judge monster is or not meet the player,
- then judge who is win according to monster's status , and (player win)change the player's score or (monster win) game over, player lose
- monster.MonsterMove(wall,player)
- according to monster.status, make different choice: chase or escape or waitingBorn
- dir = chase(wall, player)
- according to player.GetX & .GetY & wall, choose the move dir
- dir = escape(wall, player)
- get contrary dir by chase(wall,player)
- dir = waitingBorn(wall)
- monster.Move(dir)
- clear its image at the old xy, then set the new xy according pre_x, pre_y, and draw its image at the new xy
- just like what player.Move(dir) has done
- 恢复地形
- game.End