opencv c 寫的小遊戲,泡泡堂超級基礎版

2021-08-21 15:54:20 字數 4771 閱讀 8668

2018.7.3--2018.7.14,這是這幾天的成果,從安裝編譯器,到配置環境,到學習新的編譯器使用,到學習c++,學習opencv,再到寫出整個遊戲,經歷了很多,也學會了很多,不怕軟體崩,不怕電腦崩,更要不怕心態崩,要真正的靜下心來面對自己的**,面對自己的人物,希望以後真正成為一名程式媛的時候,這些經歷會成為我美好的回憶

1:主函式控制整個程式的執行

#include "stdafx.h"

#include"game.h"

#include"backmusic.h"

int main()

2:接下來分別寫人物地圖**背景**以及控制遊戲各種介面跳轉的遊戲類

人物類:

#include "stdafx.h"

#include "player.h"

cplayer::cplayer()

m_pos.x = 40;

m_pos.y = 40;

m_speed = 40;

}cplayer::~cplayer()

}void cplayer::move(char key, cgamemap * map)

break;

case 's':

case 's':

if (y < 600)

break;

case 'a':

case 'a':

if (x > 0)

break;

case 'd':

case 'd':

if (x <660)

break;

}if (map->judge(x, y))

}void cplayer::move(char key, cleveltwomap * map)

break;

case 's':

case 's':

if (y < 600)

break;

case 'a':

case 'a':

if (x > 0)

break;

case 'd':

case 'd':

if (x <660)

break;

}if (map->judge(x, y))

}void cplayer::drawtoback(iplimage * back)

地圖類:

#include "stdafx.h"

#include "gamemap.h"

cgamemap::cgamemap()

}cgamemap::~cgamemap()

}void cgamemap::readmap()}}

void cgamemap::createmap()}}

iplimage *cgamemap::getshowmap()

int cgamemap::judge(int x, int y)

**類:

#include "stdafx.h"

#include "bomb.h"

cbomb::cbomb()

for (int i = 0; i < 5; i++)

}cbomb::~cbomb()

for (int i = 0; i < 5; i++)

}int cbomb::judgemap(cgamemap *giftmap)}}

return m;

}int cbomb::judgemap2(cleveltwomap *giftmap)}}

return m;

}void cbomb::bombstate(iplimage * imgback)

else

if (m_timecount >= 30)

else

if (m_timecount <28)

}void cbomb::bombchange(iplimage * imgback, cgamemap * map, cgamemap *bombmap)

}void cbomb::bombchange2(iplimage * imgback, cleveltwomap * map, cleveltwomap *bombmap)

}int cbomb::bombed(int x, int y)

void cbomb::clearbomb(cgamemap *bombmap, int x, int y)//清除炸彈,}}

void cbomb::clearbomb(cleveltwomap *bombmap, int x, int y)}}

以及貼圖時所用的工具類,呼叫工具類裡裡面的函式來對進行處理,這裡用到了畫素巨集的處理方法

#include "stdafx.h"

#include "tools.h"

ctools::ctools()

ctools::~ctools()

void ctools::drawtoback(iplimage * back, iplimage * img, int x, int y, int blue, int green, int red)}}

}#include "stdafx.h"

#include "backmusic.h"

cbackmusic::cbackmusic()

cbackmusic::~cbackmusic()

void cbackmusic::playmusic()

如果需要設定另外的關卡,只需要將你需要變換的地圖呀人物呀以及輸贏方式變換一下重新寫乙個類或者直接繼承就行了,這裡初學的時候,加上時間緊迫,設定關卡就設定了兩關,並且只是修改了相關的地圖,其他的都沒有變,以後有時間有想法再來改進

#include "stdafx.h"

#include "leveltwomap.h"

cleveltwomap::cleveltwomap()

}cleveltwomap::~cleveltwomap()

}void cleveltwomap::readmap()}}

void cleveltwomap::createmap()}}

iplimage * cleveltwomap::getshowmap()

int cleveltwomap::judge(int x, int y)

最後就是最重要的game類,控制整個遊戲的執行,其中穿插了時間的計算,但是沒有想到辦法把時間顯示在遊戲介面上,以後想到了再說,其實核心控制遊戲進行,想法還是挺簡單的,遺憾的是滑鼠事件沒有加上去,其實學歷,但是加上去的時候始終有錯,所以就放棄了,等以後能熟練運用滑鼠事件函式再來解決這個問題,畢竟遊戲都離不開滑鼠,game類看起來還是很簡單的,小衛星那個一下就可以想通,整個遊戲也是比較簡單的,比較適合真的那種新手看

#include "stdafx.h"

#include "game.h"

cgame::cgame()

cgame::~cgame()

void cgame::run()}}

void cgame::welcome()

if (key == 'h' || key == 'h')

if (key == 'q' || key == 'q')

cvreleaseimage(&m_showimg);

cvdestroywindow("qq candy");

}void cgame::choice()

if (key == 's' || key == 's')

}void cgame::help()

}void cgame::level1()

updatemap();

m_bomb.m = m_bomb.judgemap(&m_mapob);

if (m_bomb.m == 0)

cvcopy(m_mapob.m_staticback, m_mapob.m_showimg);

char key = cvwaitkey(50);

if (key == ' ' && !m_bomb.m_flag)

if (m_bomb.m_flag)}}

m_player.move(key, &m_mapob);

m_player.drawtoback(m_mapob.m_showimg);

cvshowimage("qq candy", m_mapob.m_showimg);}}

void cgame::level2()

updatemap2();

m_bomb.m = m_bomb.judgemap2(&m_mapob2);

if (m_bomb.m == 0)

cvcopy(m_mapob2.m_staticback, m_mapob2.m_showimg);

char key = cvwaitkey(50);

if (key == ' ' && !m_bomb.m_flag)

if (m_bomb.m_flag)}}

m_player.move(key, &m_mapob2);

m_player.drawtoback(m_mapob2.m_showimg);

cvshowimage("qq candy", m_mapob2.m_showimg);}}

void cgame::win()

void cgame::lose()

void cgame::updatemap()

void cgame::updatemap2()

真正的適合新手的,這是我寫的第乙個比較成型的遊戲,雖然很簡單,過程也很艱難,感謝朋友的陪伴以及幫助和鼓勵,10天的成果,對於乙個沒有學過c++和opencv的人而言,已經足夠了,希望以後能好好改進,做出更好的遊戲來。

發布乙個久違的「泡泡堂」單機v2版

我前陣子也搞了段實踐omega 2d 引擎 速度還形,效果比較多 也打算重寫這個遊戲,不過照目前這個情況來看,恐怕只有等工作穩定了後再說吧。這裡可以看螢幕帖圖 這裡是更新的功能 1.落點更精確 2.可站半身位 3.泡泡 的水柱更準確 4.手感調整了,比如自動移位調整座標 如果被炸了,請按回車,放炸彈...

自己寫的小遊戲,玩玩

tchar.h ifndef trect define trect include struct trect public rect endif twindow.h pragma once include include include trect.h define black false defi...

js寫的一款前端小遊戲

拖延症晚期的我原本計畫趁著週末寫個年終總結,但是一直沒有什麼思路,想來想去也沒想到要寫啥就胡亂寫了這麼乙個小東西。一直比較痴迷遊戲行業,可能我不太適合做前端,應該去學c 首先當然是選擇一張背景圖,作為整個場景中的地圖,而且要大要高畫質。布局到頁面中。然後通過可視區值展示這張的一小部分。我這裡用的是寬...