这个游戏的源码来自与github,这个游戏通过吃蘑菇或者阳光来增长自己的身体,
如果其它虫子头部碰着你的身体,则被碰的虫子消失,每杀死一个虫子,分值加1,
如果是你的头部碰到其它虫子的身体,则死亡游戏结束。
如果碰到骷颅头,也算是死亡,游戏结束。
键盘的上下左右键控制虫子的移动,能够移动的虫子的名字是Bibhuti.
以下是游戏的源码,可以在QtCreator上运行。
附上游戏截图:
游戏需要的资源图片请到
https://github.com/wangrling/QtSnake
下载,这个网页也可以下载源码,有点小错误,更正便可运行。
// food.h
#ifndef FOOD_H
#define FOOD_H
#include <QGraphicsPixmapItem>
class Food: public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
public:
int speed;
int life;
int maxLife;
Food(QGraphicsScene *scene, int mX, int mY, int x, int y);
public slots:
void countLife();
};
#endif // FOOD_H
// food.cpp
#include "Food.h"
#include "Game.h"
#include "Util.h"
#include<QGraphicsScene>
#include <QTimer>
extern Game *g;
Food::Food(QGraphicsScene *scene, int mX, int mY, int x=-1, int y=-1)
{
life = 0;
maxLife = Util::random(10,15);
setZValue(-100);
if(x == -1 && y == -1){
//set according to given data
setPixmap(QPixmap(":/images/f"+ QString::number(Util::random(1,7)) + ".png"));
setPos(Util::random(10,mX), Util::random(10,mY));
}
else{
//set randomly
setPixmap(QPixmap(":/images/f"+ QString::number(Util::random(1,7)) + ".png"));
setPos(x, y);
}
//set random scale
int r = Util::random(1,3);
if(r == 1)setScale(1);
else if(r == 2)setScale(0.5);
else if(r == 3)setScale(0.25);
scene->addItem(this);
//timer to count life
QTimer *countTimer = new QTimer();
connect(countTimer, SIGNAL(timeout()), this, SLOT(countLife()));
countTimer->start(1000);
}
void Food::countLife()
{
life++;
if(life == maxLife){
g->scene->removeItem(this);
delete this;
}
}