第二次團隊任務之我的

思路描述

個人此次任務是有關於遊戲角色的移動操做,也就是能夠讓英雄經過鍵盤動起來。這個東西我一開始是真的一頭霧水,不知從何作起,百度還百度不到詳細的教程。我是經過百度關鍵詞c++小遊戲找到一些門路的。本人仍是比較喜歡經過視頻的學習,我以爲這樣能更好的學習。c++

設計實踐過程

本次任務中總的分爲三個內容。第一:有關地圖的簡單描繪。說是簡單描繪,其實啥都沒有,主要是爲了讓英雄能夠移動。第二個就是關於英雄移動的問題了,這個比較頭疼。由於涉及到了未接觸過的新領域。經過各路的博客學習,參考別的小遊戲例如「貪吃蛇」,「俄羅斯方塊」 等小遊戲來模仿實現。學習

一些代碼展現(這裏只展現cpp文件)

這是關於地圖的初始化。設計

#include "Graphic.h"  
int Graphic::m_screen_width = SCREEN_WIDTH;
int Graphic::m_screen_height = SCREEN_HEIGHT;
void Graphic::Create()
{
    initgraph(m_screen_width, m_screen_height);
}

void Graphic::Destroy()   
{
    closegraph();
}

int Graphic::GetScreenWidth()
{
    return m_screen_width;
}

int Graphic::GetScreenHeight()
{
    return m_screen_height;
}

下面是關於英雄的描畫與移動(我想後面會用圖片代替描畫)code

#include "hero.h"  

void hero::SetDir(Dir dir)
{
    m_dir = dir;
}
void hero::DrawTankBody(int style)
{
    fillrectangle(m_x - 4, m_y - 4, m_x + 4, m_y + 4);
    if (style == 1)
    {
        fillrectangle(m_x - 8, m_y - 6, m_x - 6, m_y + 6);
        fillrectangle(m_x + 6, m_y - 6, m_x + 8, m_y + 6);
    }
    else
    {
        fillrectangle(m_x - 6, m_y - 8, m_x + 6, m_y - 6);
        fillrectangle(m_x - 6, m_y + 6, m_x + 6, m_y + 8);
    }
}
void hero::Display()
{
    COLORREF color_save = getfillcolor();

    setfillcolor(m_color);

    switch (m_dir)
    {
    case UP:
        DrawHeroBody(1);
        line(m_x, m_y, m_x, m_y - 10);
        break;
    case DOWN:
        DrawHeroBody(1);
        line(m_x, m_y, m_x, m_y + 10);
        break;
    case LEFT:
        DrawHeroBody(0);
        line(m_x, m_y, m_x - 10, m_y);
        break;
    case RIGHT:
        DrawHeroBody(0);
        line(m_x, m_y, m_x + 10, m_y);
        break;
    default:
        break;
    }
    setfillcolor(color_save);
}
void hero::Move()
{
    switch (m_dir)
    {
    case UP:
        m_y -= m_step;
        if (m_y < 0)
            m_y = Graphic::GetScreenHeight() - 1;
        break;
    case DOWN:
        m_y += m_step;
        if (m_y > Graphic::GetScreenHeight())
            m_y = 1;
        break;
    case LEFT:
        m_x -= m_step;
        if (m_x < 0)
            m_x = Graphic::GetScreenWidth() - 1;
        break;
    case RIGHT:
        m_x += m_step;
        if (m_x > Graphic::GetScreenWidth())
            m_x = 1;
        break;
    default:
        break;
    }
}
相關文章
相關標籤/搜索