diff --git a/build/Desktop_Qt_6_2_4_MinGW_64_bit-Debug/.qmake.stash b/build/Desktop_Qt_6_2_4_MinGW_64_bit-Debug/.qmake.stash new file mode 100644 index 0000000..8ef0853 --- /dev/null +++ b/build/Desktop_Qt_6_2_4_MinGW_64_bit-Debug/.qmake.stash @@ -0,0 +1,21 @@ +QMAKE_CXX.QT_COMPILER_STDCXX = 201703L +QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 11 +QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 2 +QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0 +QMAKE_CXX.COMPILER_MACROS = \ + QT_COMPILER_STDCXX \ + QMAKE_GCC_MAJOR_VERSION \ + QMAKE_GCC_MINOR_VERSION \ + QMAKE_GCC_PATCH_VERSION +QMAKE_CXX.INCDIRS = \ + C:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++ \ + C:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++/x86_64-w64-mingw32 \ + C:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++/backward \ + C:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include \ + C:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed \ + C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include +QMAKE_CXX.LIBDIRS = \ + C:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0 \ + C:/Qt/Tools/mingw1120_64/lib/gcc \ + C:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/lib \ + C:/Qt/Tools/mingw1120_64/lib diff --git a/gamecontroller.cpp b/gamecontroller.cpp index 837cc81..b4ce734 100644 --- a/gamecontroller.cpp +++ b/gamecontroller.cpp @@ -4,7 +4,10 @@ #include #include #include +#include // 添加头文件 +// 在文件开头定义(不推荐长期使用) +#define qrand() rand() #include "gamecontroller.h" #include "food.h" #include "snake.h" diff --git a/snake.cpp b/snake.cpp index ed3500f..3e48e75 100644 --- a/snake.cpp +++ b/snake.cpp @@ -13,6 +13,7 @@ Snake::Snake(GameController &controller) : moveDirection(NoMove), controller(controller) { + lastDirectionChangeTime = QTime::currentTime(); // 初始化时间 } QRectF Snake::boundingRect() const @@ -72,7 +73,14 @@ void Snake::setMoveDirection(Direction direction) return; if (moveDirection == MoveDown && direction == MoveUp) return; + // 检查时间间隔 + QTime currentTime = QTime::currentTime(); + if (lastDirectionChangeTime.isValid() && lastDirectionChangeTime.msecsTo(currentTime) < 100) { // 100 毫秒的时间间隔 + return; + } + moveDirection = direction; + lastDirectionChangeTime = currentTime; // 更新时间 } Snake::Direction Snake::currentDirection() diff --git a/snake.h b/snake.h index 5979d3b..5a12b71 100644 --- a/snake.h +++ b/snake.h @@ -3,7 +3,7 @@ #include #include - +#include // 添加这一行 class GameController; class Snake : public QGraphicsItem @@ -36,7 +36,7 @@ class Snake : public QGraphicsItem void moveDown(); void handleCollisions(); - + QTime lastDirectionChangeTime; // 添加成员变量 QPointF head; int growing; int speed;