以后所有可以下載的東西都會(huì)加入此貼.這是一篇持續(xù)更新的貼子.
2010.01.14 2D Skinned Mesh
簡(jiǎn)介:一個(gè)2D的蒙皮骨骼例子,可以看清骨骼運(yùn)算的本質(zhì) 詳細(xì)請(qǐng)進(jìn)
2010.09.02 CCGE 1.0.1
簡(jiǎn)介:開(kāi)開(kāi)心心收?qǐng)觯畱?yīng)該是最后版本了.本人對(duì)控制臺(tái)已無(wú)憾言.詳細(xì)請(qǐng)進(jìn)
2010.08.30 CCGE?。?0.0
簡(jiǎn)介:在原來(lái)CCGL的基礎(chǔ)上,修改了底層繪制方案,使效率提升了許多倍.并整合了兩個(gè)游戲DEMO.修改了其更新算法,使它們的繪制獨(dú)立于CPU運(yùn)算速度,不會(huì)出現(xiàn)更新過(guò)快過(guò)慢的現(xiàn)象(如果連基本幀率都達(dá)不到的CPU,另當(dāng)別論)...
下載頁(yè)面
2010.08 俄羅斯方塊 0.0.1
簡(jiǎn)介:利用控制臺(tái)字符屬性產(chǎn)生圖形效果,寫(xiě)出的俄羅斯方塊.下載頁(yè)面
2010.07 貪食蛇 0.0.1
簡(jiǎn)介:利用控制臺(tái)字符屬性產(chǎn)生圖形效果,寫(xiě)出的貪食蛇.下載頁(yè)面
2010.06 3d模型導(dǎo)入
簡(jiǎn)介:畢業(yè)設(shè)計(jì)時(shí)做的一個(gè)3D模型導(dǎo)入程序.很寒酸.用的是OPENGL來(lái)加載MD2模型下載頁(yè)面
2009.04 3d貪食蛇-小游戲
簡(jiǎn)介:這是一款基于DX9的小游戲,學(xué)完DX9做了兩個(gè).這是其中一個(gè).下載頁(yè)面
2008.10 墻中公主-小游戲
簡(jiǎn)介:這是一款基于DX9的小游戲,學(xué)完DX9做了兩個(gè).這是其中一個(gè).下載頁(yè)面
更新內(nèi)容.又再一次地修改了CCGL,使它可以支持變寬字符. 這樣輸出就美觀了.
進(jìn)一步完善了游戲,加入了開(kāi)場(chǎng)場(chǎng)景等邏輯相關(guān)的東西.
BUG:消除方塊時(shí)的算法一直沒(méi)修正. 計(jì)分系統(tǒng)沒(méi)有做.
最新下載地址:
Tetris 0.0.1.rar下面是截圖,算不上精彩.但在控制臺(tái)下也不見(jiàn)得有多遜色.



----------------------------------------------------------------------------------------------------------------------------------
麻雀雖小,五臟具全.
此次正式將我寫(xiě)的控制臺(tái)圖形命名為CCGL(cukcoo console graphic layer).弄個(gè)名字,精神也自然來(lái)了.純屬自?shī)首詷?lè).
關(guān)于CCGL的功能如下:
1,支持圖文混排(英文字符和中文字符同寬,即都占兩格).
2,支持雙緩沖.
3,能夠指定緩沖區(qū)大?。?br>4,能夠定位像素位置.

注:所有的X,Y都做了轉(zhuǎn)換.使用時(shí),采用與GDI相同的坐標(biāo)系.即左上角為(0,0)
關(guān)于這個(gè)俄羅斯方塊.
在網(wǎng)上有很多關(guān)于俄羅斯方塊的代碼,有的是一兩個(gè)類堆積而成,有的則是一個(gè)個(gè)函數(shù)拼接.當(dāng)然,還有更厲害的就是一個(gè)main函數(shù)搞定一切的大仙們的作品.
此次寫(xiě)俄羅斯方塊,花了兩三天晚上的時(shí)間. 并且還有BUG,也是不完整的產(chǎn)品. 時(shí)間花在了哪里呢.那就得看看這俄羅斯方塊有什么.
俄羅斯方塊能有什么,就是一堆方塊而已.但是,俄羅斯方塊的代碼呢. 卻要看你是怎么寫(xiě)了.
突發(fā)其想,將俄羅斯方塊按普通的MMO游戲來(lái)寫(xiě).即對(duì)其各模塊進(jìn)行分類.
圖形(CCGL)
場(chǎng)景(與圖形繪制相關(guān)的部分,唯一)
對(duì)象(將場(chǎng)景對(duì)象與邏輯對(duì)象合并了.多實(shí)例)
邏輯場(chǎng)景(多實(shí)例,與邏輯相關(guān)的部分,邏輯狀態(tài)決定了采用哪個(gè)場(chǎng)景,對(duì)應(yīng)的場(chǎng)景決定了如何處理消息.)
邏輯(這是處理場(chǎng)景轉(zhuǎn)換,整合多個(gè)模塊功能的地方,唯一)Launcher?。虞d器,加載游戲并執(zhí)行.在進(jìn)入游戲前可以選擇一些初始配置)
Main 這就是主函數(shù)了.其實(shí)它最簡(jiǎn)單了.
GLaucncher.Init();
GLaucncher.Run();
GLaucncher.Exit();
上張圖看看效果.
完成度未知,但可以試玩.

希望能給游戲開(kāi)發(fā)愛(ài)好者們一些思路和幫助.
源碼和可執(zhí)行程序
請(qǐng)點(diǎn)這里 順便說(shuō)一下,我是一個(gè)喜歡造輪子的人. 當(dāng)然,我會(huì)選擇一些比較有意思的輪子.而不是盲目濫造. 我知道,將東西發(fā)到CPP首頁(yè),就有可能受到批判.批判我會(huì)接受,但請(qǐng)注意文明.
新版源碼下載地址.
點(diǎn)擊這里 (SnakeGame 0.0.1 ) 鏈接已修正,請(qǐng)放心使用.
--------------------------------------------------------------------------------------------------------------------------------
先前的版本會(huì)閃屏,于是新建了一個(gè)緩沖來(lái)解決,并將對(duì)控制臺(tái)的"圖形"操作抽象了出來(lái),使我們使用的時(shí)候就像在使用普通的圖形設(shè)備一樣
1 設(shè)置清屏色
2 指定像素位置,設(shè)置要繪制的內(nèi)容
3 提交緩沖區(qū)內(nèi)容.
新版源碼已完成了游戲的基本功能
輸入控制
食物檢測(cè)
障礙檢測(cè)
另外,還收錄了部分用于方便設(shè)置控制臺(tái)屬性的函數(shù).如窗口圖標(biāo),窗口句柄等.
-------------------------------------------
Windows下的控制臺(tái)是可以設(shè)置前景,背景色的。這給了我一個(gè)很不錯(cuò)的想法,用他寫(xiě)圖形。
說(shuō)好就開(kāi)工,用了一個(gè)小時(shí)寫(xiě)了一個(gè)貪食蛇。
完成功能:
有一個(gè)簡(jiǎn)單的繪制框架。
一個(gè)簡(jiǎn)單的UI。
除了食物沒(méi)有處理外,其余都OK。
能自動(dòng)更新,檢測(cè)碰撞等。。。
二話不說(shuō),有圖有真相。
蛋疼的朋友可以試試,挺爽的。。。。

下載地址:
源碼加執(zhí)行程序
今天早上起來(lái)就興致脖脖地開(kāi)始編寫(xiě)引擎的Log輸出工具。 一個(gè)小時(shí)后,基本上完功?!〗?jīng)測(cè)試時(shí)才發(fā)現(xiàn),原來(lái)_tprintf在Unicode下不能輸出中文。求解未果,只好去上班了。
晚上回來(lái)繼續(xù)完善早上的工作,將Log輸出做成了可以重定向的層次結(jié)構(gòu),并放入了一個(gè)可以共享的Share動(dòng)態(tài)庫(kù)中。這樣就可以保持Log輸出系統(tǒng)的唯一和共享(靜態(tài)Lib中共無(wú)法共享).
用百度搜了一下這個(gè)輸出問(wèn)題,突然發(fā)現(xiàn)了其中奧妙,原來(lái)Unicode需要本地化信息。
經(jīng)測(cè)試發(fā)現(xiàn)了如下規(guī)律
/*
C多 CU 非C多 非CU
stdio 1 0 1 1
iostream 1 1 0 0可以得出
1、在多字節(jié)時(shí),默認(rèn)(C)風(fēng)格下,二者都能輸出中文。
2、在多字節(jié)時(shí),非C風(fēng)格下,cout不能輸出中文
3、在U時(shí),默認(rèn)C風(fēng)格下,print不能輸出中文
4、在U時(shí),非C風(fēng)格下,cout不能輸出中文由此可知,要在C風(fēng)格下,iostream才能輸出中文。
而printf只有在C風(fēng)格的Unicode下才不能輸出中文,其它均可。
*/
測(cè)試代碼如下
#include <iostream>
#include <tchar.h>
#include <locale>
int _tmain(int argc, _TCHAR* argv[])
{
#ifdef _UNICODE
_tsetlocale(LC_CTYPE,TEXT(""));
#endif
_tprintf(TEXT("a在哪里啊\n"));
#ifdef _UNICODE
_tsetlocale(LC_CTYPE,TEXT("C"));
#endif
#ifdef _UNICODE
std::wcout<<"d在哪里啊"<<std::endl;
#else
std::cout<<"d在哪里啊"<<std::endl;
#endif
getchar();
return 0;
}