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.
2.9 KiB
2.9 KiB
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) //预测下一时刻玩家的坐标
- 根据nx,ny,判断下一时刻玩家是否撞墙
- 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
- if(true)
- bean.IsEmpty? && goldBean.IsEmpty?
- player.TryEatGoldBean(goldBean)// 玩家尝试吃金豆子
- include 2 parts, just same as above
- if(successful) // 玩家尝试吃金豆子成功
- bean.IsEmpty? && goldBean.IsEmpty?
- if(true)
- game over, player win
- if(true)
- change all of monster's status
- change all of monster's speed
- bean.IsEmpty? && goldBean.IsEmpty?
- player.TryEatBean(bean) // 玩家尝试吃豆子
- 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
- 恢复地形
- dir = chase(wall, player)
- according to monster.status, make different choice: chase or escape or waitingBorn
- game.End