第一次上传代码前构思好课设内容为一款以弹幕射击+塔防为玩法的游戏,东方主题;
初期预想如下:
第一周实现大框架的搭建,第二周实现角色的创建及移动
主要代码如下(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):照着网上各种教程有样学样,像极了小孩跟读学说话
自学流程为:需要实现某功能->上网查案例->发现新知识点-> 学习新知识点->实现某功能->需要实现下一个新功能......
需要某功能时上网找使用案例,结合自己代码实现功能,成就感++;