贪吃蛇游戏源码

这个游戏的源码来自与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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值