c++课程设计(QT)

        第一次上传代码前构思好课设内容为一款以弹幕射击+塔防为玩法的游戏,东方主题;

 初期预想如下:

 第一周实现大框架的搭建,第二周实现角色的创建及移动

主要代码如下(game1.cpp代码,非最终版,带debug调试):

#include "mainwindow_game1.h"
#include "ui_mainwindow_game1.h"
#include <QDebug>
MainWindow_game1::MainWindow_game1(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow_game1)
{
    game1_scene();
    player_pic.load(player_picture_1);
    label = new QLabel(this);
    label->setPixmap(player_pic);
    label->resize(80,80);
    label->setScaledContents(true);
    label->move(player_x,player_y);
    qDebug()<<"lalala";
    QTimer *_time=new QTimer();
   _time->start(5);
    connect(_time,SIGNAL(timeout()),this,SLOT(player_move()));
}
MainWindow_game1::~MainWindow_game1()
{
    delete ui;
}
void MainWindow_game1::keyPressEvent(QKeyEvent *e)
{
    if(e->key()==Qt::Key_Up)
    {
       flag[0]=1;
       direction=0;
    }
    if(e->key()==Qt::Key_Down)
    {
        flag[1]=1;
        direction=2;
    }
    if(e->key()==Qt::Key_Left)
    {
        flag[2]=1;
        direction=3;
    }
    if(e->key()==Qt::Key_Right)
    {
        flag[3]=1;
        direction=1;
     }
    update();
}
void MainWindow_game1::keyReleaseEvent(QKeyEvent *e)
{
    if(e->key()==Qt::Key_Up) flag[0]=0;
    if(e->key()==Qt::Key_Down) flag[1]=0;
    if(e->key()==Qt::Key_Left) flag[2]=0;
    if(e->key()==Qt::Key_Right) flag[3]=0;
    update();
//        qDebug()<<"lalala"<<flag[0];
}
void MainWindow_game1::game1_scene(){
    //设置窗口尺寸(固定)
    setFixedSize(GAME_WIDTH,GAME_HEIGHT);
    //标题
    setWindowTitle(GAME1_TITLE);
    //窗口图标
    setWindowIcon(QIcon(GAME_Icon));
//        qDebug()<<"lalala";
}
void MainWindow_game1::UPDATE()
{
    update();
    //    qDebug()<<"lalala";
}
void MainWindow_game1::player_move()
{
    if(flag[0]==1)player_y--;
    if(flag[1]==1)player_y++;
    if(flag[2]==1)player_x--;
    if(flag[3]==1)player_x++;
    label->move(player_x,player_y);
    qDebug()<<"lalala"<<player_x;
    update();
}
void MainWindow_game1::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawPixmap(m_map2.m_map1_posx,m_map2.m_map1_posy,m_map2.m_map1_2);//  尝试绘制地图场景
    //绘制角色
    painter.drawPixmap(player_x,player_y,player_pic);
}

感想(bushi):照着网上各种教程有样学样,像极了小孩跟读学说话

自学流程为:需要实现某功能->上网查案例->发现新知识点-> 学习新知识点->实现某功能->需要实现下一个新功能......

需要某功能时上网找使用案例,结合自己代码实现功能,成就感++;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值