說(shuō)來(lái)還是比較慚愧的,都說(shuō)要寫瑪麗醫(yī)生這么長(zhǎng)時(shí)間了,至到今天下午為止還沒(méi)正式的玩過(guò)瑪麗醫(yī)生。上午的時(shí)候開(kāi)始想了關(guān)于藥片的問(wèn)題,由于還沒(méi)正是玩過(guò),所以上午的時(shí)候全憑的是空想。開(kāi)始的時(shí)候只知道藥片要旋轉(zhuǎn)的,至于具體年怎么旋轉(zhuǎn)就不知道了,上午上課的時(shí)候想了一點(diǎn)借鑒了一點(diǎn)俄羅斯方塊的思想就是把藥片放在一個(gè)2*2的矩陣?yán)锩妫幤念伾鶕?jù)定義的顏色隨機(jī)生成。旋轉(zhuǎn)的時(shí)候,把矩陣順時(shí)針旋轉(zhuǎn)90度就可以了。四種狀2態(tài)如下圖所示


但是下午回來(lái)的時(shí)候玩了一下瑪麗醫(yī)生,發(fā)現(xiàn)實(shí)際情況還是與我想象的不同的,在[0][1]的位置始終是沒(méi)有填充顏色的。如果藥片是兩種顏色的話,那它也就有四種狀態(tài),分別如下圖

但是如果藥片只有一種顏色的話,藥片就僅僅只有兩種狀態(tài),即上圖組中的前兩個(gè)(圖略)。
以上僅僅是關(guān)于藥片的比較直觀的一點(diǎn)想法,難免會(huì)有一點(diǎn)不符合實(shí)際,還請(qǐng)各位不吝賜教。關(guān)于藥片的具體用代碼實(shí)現(xiàn)的我會(huì)陸續(xù)寫出來(lái)的。明天晚上將準(zhǔn)是提交出關(guān)于瑪麗醫(yī)生的第一版計(jì)劃。
posted @
2008-10-17 22:54 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(295) |
評(píng)論 (3) |
編輯 收藏
今天沒(méi)有多想瑪麗醫(yī)生,一來(lái)是因?yàn)榘滋煲蝗缂韧钠v,偉大的1050造就的;二是周五晚上來(lái)得總是比周日晚上開(kāi)心,雖然翹掉了選修課,但是還是沒(méi)有寫俺的偽碼,因?yàn)檫€沒(méi)想明白呢。
之前的那個(gè)偽碼如果算是思路正常有解的話那也不是OpenGL的瑪麗醫(yī)生,充其量是個(gè)C++版的。根據(jù)貓講的狀態(tài)機(jī)的概念,我想重新設(shè)計(jì)一個(gè)。但是仍然有東西明白不了。比如,我理解了是要一個(gè)frame一個(gè)frame的不停地畫,從而形成動(dòng)畫效果。也就是用那個(gè)畫方塊的OpenGL某函數(shù),只要獲得坐標(biāo)值和顏色就好了,而這些坐標(biāo)值是由操作影響的,也是可以實(shí)現(xiàn)的。但就是每一frame都是要重新畫的,一片空白上再操作,那這樣的話越往后需要畫的東西就越多,它不光要有一個(gè)OpenGL某函數(shù),它要有很多的啊,因?yàn)橹耙驳袈淞撕芏嗄z囊的,這些膠囊的坐標(biāo)有的是不再變換了,有的還要變,這些也能處理,但是需要儲(chǔ)存這些數(shù)據(jù),那豈不是很繁瑣?而且還要調(diào)用很多次某函數(shù)。這就不是一條語(yǔ)句可以解決的啊。
后來(lái)看了那個(gè)SwapBuffer,隱約了解了一點(diǎn)兒,但還是沒(méi)看出來(lái)哪里能實(shí)現(xiàn)這個(gè)不斷地畫的循環(huán),還有它的坐標(biāo)值是怎么存儲(chǔ)的。去吃飯的路上risky說(shuō)了那叫MainLoop,然后還小鄙視了一下我不知道Loop是循環(huán)的意思。于是想到了貓的留言,說(shuō)是某Loop替我畫了,這樣子就體會(huì)到OpenGL和C++的區(qū)別了,它更像是一個(gè)接口,就像管道和管道之間的那個(gè)東西一樣,很多東西它幫你實(shí)現(xiàn),它都封裝好了,你只需要告訴它做什么就好了,不需要知道它怎么做,也更不需要自己去做。難道是這樣嗎?不解,我只知道自己還是不知道這些東西。概念模糊,或者就沒(méi)有概念。由此不小心想到了專業(yè)英語(yǔ),一些翻譯過(guò)來(lái)的東西有的時(shí)候很糟糕,或者那些東西在中國(guó)還沒(méi)有定義,或者譯者沒(méi)能理解那些東西在英語(yǔ)中的意思。要是程序用漢語(yǔ)寫,計(jì)算機(jī)從中國(guó)起步那該多美好啊。
周末不能寫太多,這個(gè)習(xí)慣不能養(yǎng)成,不然以后就沒(méi)生活了。收筆,睡覺(jué)的時(shí)候再想想,弄明白了明天寫偽碼~~Over...
posted @
2008-10-17 21:02 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(129) |
評(píng)論 (0) |
編輯 收藏
昨天沒(méi)有寫筆記,請(qǐng)大家責(zé)罵。
原因是,不小心斷網(wǎng)了,發(fā)送鍵點(diǎn)出去返回給我一個(gè)無(wú)情的該頁(yè)無(wú)法顯示。中午本想補(bǔ)上,結(jié)果greenbrower死掉一次,寫了一大片都這樣不見(jiàn)了,巨崩潰,懶得寫第三遍。直接上代碼。
1 #include <GL/glut.h>
2 #include <ctime>
3
4 static const int WindowWidth = 640;
5 static const int WindowHeight = 480;
6
7 int count = 0;
8 int speed = 4;
9
10 enum GridType
11 {
12 NOTHING, CAPSULE, WORM
13 };
14
15 enum Connect
16 {
17 NOT_CONNECTED, LEFT, RIGHT, UP, DOWN
18 };
19
20 enum Color
21 {
22 BLACK, YELLOW, BLUE, RED
23 };
24
25 enum DoctorDirect
26 {
27 DD_NODIRECT, DD_UP, DD_DOWN, DD_LEFT, DD_RIGHT
28 };
29
30
31 class Bottle
32 {
33 private:
34 GridType b_grid_type[8][16];
35 Color b_color[8][16];
36 int b_x,b_y; //bottle的位置
37 Connect b_connect;
38 public:
39 void drawBottle( void )
40 {
41 //畫瓶子的外殼
42 //畫瓶子的內(nèi)部,根據(jù)b_x,b_y和瓶子的內(nèi)容物
43 }
44 Bottle( int level )
45 {
46 //生成level*4個(gè)蟲(chóng)子
47 }
48 };
49
50 class Doctor
51 {
52 private:
53 int d_x,d_y; //活動(dòng)藥丸(左下角)相對(duì)于瓶子的位置
54 bool d_state; //橫的0,豎的1
55 Color d_color[2]; //倆藥丸的顏色
56 DoctorDirect d_direct;
57 public:
58 void drawDoctor( void )
59 {
60 //畫醫(yī)生的形象
61 //畫活動(dòng)藥丸
62 }
63 Doctor( void )
64 {
65 //確定初始位置
66 //隨機(jī)生成兩藥丸顏色
67 }
68 void move( void )
69 {
70 //偽碼就先不寫了,我紙上寫了一堆,思路很清晰
71 }
72 void fall( void )
73 {
74 d_direct = DD_DOWN;
75 move();
76 }
77 void setDirect( DoctorDirect direct )
78 {
79 d_direct = direct;
80 }
81 };
82
83 static Bottle* bottle = NULL;
84 static Doctor* doctor = NULL;
85
86 void init( void )
87 {
88 //new兩個(gè)類
89 }
90
91 void key( unsigned char key_char, int not_use, int not_use_1 )
92 {
93 switch ( key_char )
94 {
95 case 'w':
96 case 'W':
97 doctor->setDirect( DD_UP );
98 break;
99 case 's':
100 case 'S':
101 doctor->setDirect( DD_DOWN );
102 break;
103 case 'a':
104 case 'A':
105 doctor->setDirect( DD_LEFT );
106 break;
107 case 'd':
108 case 'D':
109 doctor->setDirect( DD_RIGHT );
110 break;
111 default:
112 doctor->setDirect( DD_NODIRECT );
113 }
114 }
115
116 void step( void )
117 {
118 if ( dead() ) return ;
119 //還沒(méi)寫完
120 ++count; if ( count == speed ) { count = 0; doctor->fall(); }
121 }
122
123 void timer( int not_use )
124 {
125 step();
126 glutPostRedisplay();
127 if ( !dead() )
128 {
129 glutTimerFunc( 1000/speed, timer, 0 );
130 }
131 }
132
133 void draw()
134 {
135 bottle->drawBottle();
136 doctor->drawDoctor();
137 }
138
139 void display( void )
140 {
141 glClear( GL_COLOR_BUFFER_BIT );
142 draw();
143 glutSwapBuffers();
144 }
145
146 int main( int argc, char * argv[] )
147 {
148 glutInit( &argc, argv );
149 glutInitDisplayMode( GLUT_RGBA|GLUT_DOUBLE );
150 glutInitWindowPosition( 50, 50 );
151 glutInitWindowSize( WindowWidth, WindowHeight );
152 glutCreateWindow( "Dr Mario By PureMilk" );
153 glutDisplayFunc( display );
154 glutKeyboardFunc( key );
155 glutTimerFunc( 1000/speed, timer, 0 );
156 gluOrtho2D( 0, WindowWidth, WindowHeight, 0 );
157 glutMainLoop();
158
159 return 0;
160 }
謝謝vczh的指點(diǎn),還望多點(diǎn)播點(diǎn)播俺。這次的思路是不是比那個(gè)混亂代碼要好些了……
posted @
2008-10-17 17:09 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(253) |
評(píng)論 (8) |
編輯 收藏
今天親愛(ài)的糖糖加入了~歡迎下~(還在UT里聽(tīng)到了糖糖的聲音)
這幾天因?yàn)榇_實(shí)沒(méi)怎么看教程,也沒(méi)有很細(xì)致的考慮瑪麗醫(yī)生,筆記就耽擱下了,不過(guò)我一直在看Q群里的聊天記錄,因?yàn)閷?duì)瑪麗醫(yī)生的考慮沒(méi)有具體到偽代碼,技術(shù)方面的感想不是很多(以后再回頭翻看的時(shí)候 應(yīng)該會(huì)獲益匪淺)。
我從5月開(kāi)始玩WOW,這是一個(gè)極其容易讓人投入大量精力的游戲~它培養(yǎng)了我對(duì)游戲的興趣,但也占用了我太多的精力,時(shí)間的分配并不是最大的問(wèn)題,精力的轉(zhuǎn)移是關(guān)鍵所在。TT同學(xué)最開(kāi)始邀請(qǐng)我我加入的時(shí)候,我的確猶豫和不舍了一下,預(yù)想到了沖突和可能的放棄。可我還是需要時(shí)間,我向殿下同學(xué)請(qǐng)了1—2周的半假,用以結(jié)束這個(gè)游戲,希望在此期間可以以一件T6結(jié)束WOW生涯,和不傷害任何人來(lái)結(jié)束游戲里的感情。
瑪麗醫(yī)生的思路我會(huì)盡力在周末想出,訂出進(jìn)度。
posted @
2008-10-17 01:52 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(145) |
評(píng)論 (0) |
編輯 收藏
昨天,哦,今天之前的那篇隨筆上講了一些困境,看起來(lái)貌似很揪心的樣子。今天晚上系統(tǒng)地和PureMilk談了一會(huì)兒后就覺(jué)得,咳,這不是還很明朗的嘛。嘿嘿。
刷新后的思路是這樣子的,嘿,保密。我居然這么惡毒地勾起了大家的興趣。
除了PureMilk外其他人的任務(wù)就是在周末前自行設(shè)計(jì)自己的馬利醫(yī)生,交出偽碼來(lái),大家集體評(píng)估獲得通過(guò)后就定了進(jìn)度,自個(gè)兒吭哧吧。最后馬利醫(yī)生的截止日期是本月末+-5天。
糖糖加入了,OpenGL基礎(chǔ)都差不多(PureMilk和寡人除外),菜鳥(niǎo)級(jí)~但是美工方面比俺們都要強(qiáng)很多。于是乎,組織又壯大了。說(shuō)到美工,嘿嘿,糾結(jié)了老夫很長(zhǎng)時(shí)間的那件事情給糖糖一下子就解決掉了。所以嘛,正如俺QQ狀態(tài)里說(shuō)的那樣:神仙掉下來(lái)了。一個(gè)是貓,一個(gè)是糖糖。生活啊有時(shí)候總是不經(jīng)意間給你一些驚喜的,有些事情就是Destined。再次感謝。
還有,我做了個(gè)決定,那就是我也加入到編程的大軍中。也就是以后寫到這里的隨筆就更有技術(shù)含量了,這種無(wú)聊的扯皮性質(zhì)的哲理散文以后越來(lái)越少了。唉,那這次就多寫點(diǎn)兒?嗨,偏不。Over。
posted @
2008-10-16 22:43 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(126) |
評(píng)論 (0) |
編輯 收藏
一直總想做點(diǎn)什么東西。因?yàn)樨澩嫠韵胱鲇螒騸(ps:某很厲害的人個(gè)性簽名點(diǎn)播)
自己程序編的馬馬虎虎。圖畫的一般般。算是沒(méi)什么特色的吧~忽然某天發(fā)現(xiàn)了游戲策劃~很難的職業(yè)~覺(jué)得自己滿合條件但是又相去甚遠(yuǎn)
不過(guò)確實(shí)有時(shí)候想做的事情不一定能自己做好。人畢竟是群居動(dòng)物。互相折磨就互相折磨吧~
至少讓自己知道不是一個(gè)人在做些什么~身邊還有很多很多很多很多一起的人~做同樣的事情有同樣的想法向著同樣的目標(biāo)努力的人
我的新起點(diǎn)~燃燒吧~小宇宙~~哇卡卡卡~~(ps:本糖很懶滴。。。大家多督促額。。多多包涵啦~~我會(huì)努力改變龜爬的看書速度滴)
posted @
2008-10-16 22:35 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(103) |
評(píng)論 (0) |
編輯 收藏
這段程序就是畫了一個(gè)三角形,想讓鍵盤控制它來(lái)上下左右運(yùn)動(dòng),但是無(wú)論怎么欽按鈕他都不運(yùn)動(dòng),非常郁悶,請(qǐng)求支援。謝謝
#include <stdlib.h>
#include <gl/glut.h>
#include <windows.h>
static GLfloat x=0.0;
static GLfloat y=0.0;
void init()


{
glClearColor(0.0,0.0,0.0,0.0);
}
void display()


{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.2f,0.8f,0.6f);
glBegin(GL_TRIANGLES);
glVertex2f(0.0+x,0.0+y);
glVertex2f(0.5+x,0.0+y);
glVertex2f(0.5+x,0.5+y);
glEnd();
glutSwapBuffers();
glFlush();
}
void keyboard(unsigned char key,int x,int y)


{
switch(key)

{
case 'd':
case 'D':
x+=0.1;
if(x>0.5)
x=0.5;
glutPostRedisplay();
break;
case 'a':
case 'A':
x-=0.1;
if(x<-1.0)
x=-1.0;
glutPostRedisplay();
break;
case 'w':
case 'W':
y+=0.1;
if(y>0.5)
y=0.5;
glutPostRedisplay();
break;
case 's':
case 'S':
y-=0.1;
if(y<-1.0)
y=-1.0;
glutPostRedisplay();
break;
case 27:
exit(0);
break;
default:
break;
}
}
void reshape(int w,int h)


{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
}
int main(int argc,char *argv[])


{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
posted @
2008-10-16 21:08 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(170) |
評(píng)論 (0) |
編輯 收藏
啟示著一個(gè)問(wèn)題我已經(jīng)困擾我很久了。對(duì)于glPushMatrix和glPopMatrix我很想知道他們之間的代碼是怎么執(zhí)行的。比如 :
void display()


{

GLdouble eqn[4]=
{0.0,1.0,0.0,0.0}; //方程y=0

GLdouble eqn2[4]=
{1.0,0.0,0.0,0.0}; //方程x=0
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glPushMatrix();
glTranslatef(0.0,0.0,-5.0); //把當(dāng)前矩陣移到(0.0,0.0,-5.0)處

glClipPlane(GL_CLIP_PLANE0,eqn);
glEnable(GL_CLIP_PLANE0);
glClipPlane(GL_CLIP_PLANE1,eqn2);
glEnable(GL_CLIP_PLANE1);
glutWireSphere(1.0,20,16);
glPopMatrix();
glFlush();
}
為什么在球還沒(méi)有畫出來(lái)的時(shí)候就已經(jīng)開(kāi)始切割了?
glPushMatrix(),glPopMatrix()都是對(duì)當(dāng)前矩陣進(jìn)行操作,但是什么是當(dāng)前矩陣?是不是跟物體本身所在坐標(biāo)系有關(guān)系?
posted @
2008-10-16 21:03 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(505) |
評(píng)論 (0) |
編輯 收藏
不知道為啥剛寫的沒(méi)有了,寫第二遍的東西就有點(diǎn)很乏味了。提綱挈領(lǐng)的交代一下吧。
俺的偽碼寫完畢了,請(qǐng)大人們給點(diǎn)意見(jiàn)。
PureMilk的代碼俺看了,居然能看個(gè)差不多,但是不明白為什么主函數(shù)里沒(méi)怎么調(diào)用子函數(shù)就能實(shí)現(xiàn)呢?感覺(jué)這就是幾個(gè)函數(shù)的羅列啊。神奇,再請(qǐng)大人們指點(diǎn)下。
進(jìn)度表在參差的時(shí)候不能對(duì)齊。可能現(xiàn)在需要調(diào)整了。兩套:一個(gè)是PureMilk按照自己那個(gè)代碼的流程給他倆制定一個(gè)進(jìn)度表,第二個(gè)就是他倆自己按照自己的思路制定各自的進(jìn)度表。晚上公投~~
另外隱約中感受到到了一個(gè)結(jié)了,需要解開(kāi)。麥伊的半假,唉。不過(guò),總之,大家要加油。一定加油~~
posted @
2008-10-16 17:12 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(127) |
評(píng)論 (4) |
編輯 收藏
說(shuō)得好像是一個(gè)西方的農(nóng)場(chǎng)主,他家的一片樹(shù)林里面生了蟲(chóng)子,于是他請(qǐng)了一批工人來(lái)幫他捉蟲(chóng)子。付給的工錢是根據(jù)他們捉蟲(chóng)子得多少。結(jié)果一段時(shí)間過(guò)去了,農(nóng)場(chǎng)主驚奇的發(fā)現(xiàn)樹(shù)林里的蟲(chóng)子非但沒(méi)有減少,反而增加了。這就不得不提到工人們的“創(chuàng)意”,他們知道捉的蟲(chóng)子越多得到的工錢也就越多,至于蟲(chóng)子是從哪兒來(lái)的就不管了。于是他們把自己家的蟲(chóng)子也捉來(lái)也放到了樹(shù)上,這樣他們就可以在樹(shù)上捉到更多的蟲(chóng)子從而得到更多的工錢。
(后面還有一段就省了,大家自由發(fā)揮想象吧)
posted @
2008-10-15 21:42 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(131) |
評(píng)論 (1) |
編輯 收藏