/c2022

Primary LanguageC++

游戏使用说明

双击运行编译后得到的sprite.exe开始游戏。 本游戏的主要内容为通过鼠标和键盘控制猫在二维平面上捉鼠或鸭和躲避狗。当猫碰到鼠或鸭即判断为捉到鼠或鸭,得分;当猫碰到狗即判断为被狗捉住,损失一条命。具体说明如下:

  1. 在游戏窗口内按住鼠标左键时,猫向对应方向加速,鼠标指向位置距离猫当前位置越远,加速度越大(当鼠标方向与猫当前方向相反时不会立刻停下,而是减速)。按住并拖动鼠标,加速度的方向和大小也随之改变。松开鼠标后停止加速。
  2. 按下 '↑'、'↓'、'←'、'→'(或 'W'、'S'、'A'、'D')时,类似鼠标控制,猫向对应方向(依次为上下左右)加速,但加速度大小固定,方向有限。横纵方向按键独立,即可以同时按住'↑'、'←'获得向左上方的加速度,但同时按住'↑'、'↓'键则以后按的为准。抬起按键后停止加速。请注意关闭输入法。
  3. 游戏平面有阻力,若不进行操作,猫会逐渐减速。猫的运动范围不能超出游戏界面,碰到边界时反弹,但会损失一部分速度。
  4. 游戏开始后会自动产生鼠或鸭,捉住鼠或鸭即可得分。其中鼠在界面内直线运动,碰到边界时反弹。鸭同样作直线运动,但在猫接近时进行躲避,并可逃出界面外。捉住鼠得1分,捉住鸭得5分。
  5. 游戏开始后会自动产生两种道具,分别是心和剑。道具生成后不会运动,猫碰到道具后即可产生相应效果。猫初始有5条命,每次获得心后可以增加一条命,最多增至10条命。猫获得剑后可以杀死狗,剑的持续效果时间为10秒。
  6. 游戏开始后会自动产生狗,其出现前5秒会出现提示。猫在非持剑状态下被狗捉住即损失一条命,若命没有损失完则猫会在随机位置重新出现,否则游戏结束。而在持剑状态下,猫可以杀死狗并获得10分。狗在界面内直线运动,但在接近猫后,若猫未持剑则会进行追捕,否则进行躲避,但不会逃出界面外。
  7. 游戏进行中按下空格键后暂停,再次按下后继续游戏。
  8. 游戏结束后按 'R' 键重新开始。
  9. 其他提示和说明:
  • 支持同时使用鼠标和键盘控制,建议以鼠标为主,键盘辅助操作。
  • 游戏左上角会显示猫的状态,包括当前得分、剩余命数、剑剩余时间。
  • 在场上存在未被获得的剑时,不会有新的剑生成。但场上有未被获得的心时,仍可能生成新的心。
  • 狗生成时保证与猫的有一定距离,猫死亡后重新生成时保证与狗有一定距离。
  • 游戏难度会随着分数增加而提升,具体表现为道具和狗的生成间隔时间、生成动物的速度变化等。
  • 本游戏包含音效,建议开启声音使用。

源码编译说明

在装有gcc、g++的Windows环境下,运行readme.md内的命令即可完成编译。若编译正常,会得到若干.o后缀的临时文件和游戏可执行文件sprite.exe。 实验环境使用的gcc和g++版本均为9.2.0,编译步骤如下:

  1. 使用命令行进入readme.md所在文件夹。
  2. 运行命令gcc -c code/*.c,产生acllib.o文件
  3. 运行命令g++ -c code/*.cpp,产生avoidObject.o, baseObject.o, bossObject.o, Game.o, Geometry.o, Global.o, itemObject.o, main.o, normalObject.o, userObject.o文件。编译时可能出现warning,可忽视。
  4. 运行命令g++ *.o -lgdi32 -lole32 -loleaut32 -luuid -lwinmm -lmsimg32 -o sprite.exe,产生sprite.exe文件。
gcc -c code/*.c 
g++ -c code/*.cpp 
g++ *.o -lgdi32 -lole32 -loleaut32 -luuid -lwinmm -lmsimg32 -o sprite.exe