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 - 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