說來還是比較慚愧的,都說要寫瑪麗醫生這么長時間了,至到今天下午為止還沒正式的玩過瑪麗醫生。上午的時候開始想了關于藥片的問題,由于還沒正是玩過,所以上午的時候全憑的是空想。開始的時候只知道藥片要旋轉的,至于具體年怎么旋轉就不知道了,上午上課的時候想了一點借鑒了一點俄羅斯方塊的思想就是把藥片放在一個2*2的矩陣里面,藥片的顏色根據定義的顏色隨機生成。旋轉的時候,把矩陣順時針旋轉90度就可以了。四種狀2態如下圖所示


但是下午回來的時候玩了一下瑪麗醫生,發現實際情況還是與我想象的不同的,在[0][1]的位置始終是沒有填充顏色的。如果藥片是兩種顏色的話,那它也就有四種狀態,分別如下圖

但是如果藥片只有一種顏色的話,藥片就僅僅只有兩種狀態,即上圖組中的前兩個(圖略)。
以上僅僅是關于藥片的比較直觀的一點想法,難免會有一點不符合實際,還請各位不吝賜教。關于藥片的具體用代碼實現的我會陸續寫出來的。明天晚上將準是提交出關于瑪麗醫生的第一版計劃。
posted @
2008-10-17 22:54 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(278) |
評論 (3) |
編輯 收藏
今天沒有多想瑪麗醫生,一來是因為白天一如既往的疲憊,偉大的1050造就的;二是周五晚上來得總是比周日晚上開心,雖然翹掉了選修課,但是還是沒有寫俺的偽碼,因為還沒想明白呢。
之前的那個偽碼如果算是思路正常有解的話那也不是OpenGL的瑪麗醫生,充其量是個C++版的。根據貓講的狀態機的概念,我想重新設計一個。但是仍然有東西明白不了。比如,我理解了是要一個frame一個frame的不停地畫,從而形成動畫效果。也就是用那個畫方塊的OpenGL某函數,只要獲得坐標值和顏色就好了,而這些坐標值是由操作影響的,也是可以實現的。但就是每一frame都是要重新畫的,一片空白上再操作,那這樣的話越往后需要畫的東西就越多,它不光要有一個OpenGL某函數,它要有很多的啊,因為之前也掉落了很多膠囊的,這些膠囊的坐標有的是不再變換了,有的還要變,這些也能處理,但是需要儲存這些數據,那豈不是很繁瑣?而且還要調用很多次某函數。這就不是一條語句可以解決的啊。
后來看了那個SwapBuffer,隱約了解了一點兒,但還是沒看出來哪里能實現這個不斷地畫的循環,還有它的坐標值是怎么存儲的。去吃飯的路上risky說了那叫MainLoop,然后還小鄙視了一下我不知道Loop是循環的意思。于是想到了貓的留言,說是某Loop替我畫了,這樣子就體會到OpenGL和C++的區別了,它更像是一個接口,就像管道和管道之間的那個東西一樣,很多東西它幫你實現,它都封裝好了,你只需要告訴它做什么就好了,不需要知道它怎么做,也更不需要自己去做。難道是這樣嗎?不解,我只知道自己還是不知道這些東西。概念模糊,或者就沒有概念。由此不小心想到了專業英語,一些翻譯過來的東西有的時候很糟糕,或者那些東西在中國還沒有定義,或者譯者沒能理解那些東西在英語中的意思。要是程序用漢語寫,計算機從中國起步那該多美好啊。
周末不能寫太多,這個習慣不能養成,不然以后就沒生活了。收筆,睡覺的時候再想想,弄明白了明天寫偽碼~~Over...
posted @
2008-10-17 21:02 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(117) |
評論 (0) |
編輯 收藏
昨天沒有寫筆記,請大家責罵。
原因是,不小心斷網了,發送鍵點出去返回給我一個無情的該頁無法顯示。中午本想補上,結果greenbrower死掉一次,寫了一大片都這樣不見了,巨崩潰,懶得寫第三遍。直接上代碼。
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 //畫瓶子的內部,根據b_x,b_y和瓶子的內容物
43 }
44 Bottle( int level )
45 {
46 //生成level*4個蟲子
47 }
48 };
49
50 class Doctor
51 {
52 private:
53 int d_x,d_y; //活動藥丸(左下角)相對于瓶子的位置
54 bool d_state; //橫的0,豎的1
55 Color d_color[2]; //倆藥丸的顏色
56 DoctorDirect d_direct;
57 public:
58 void drawDoctor( void )
59 {
60 //畫醫生的形象
61 //畫活動藥丸
62 }
63 Doctor( void )
64 {
65 //確定初始位置
66 //隨機生成兩藥丸顏色
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兩個類
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 //還沒寫完
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的指點,還望多點播點播俺。這次的思路是不是比那個混亂代碼要好些了……
posted @
2008-10-17 17:09 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(242) |
評論 (8) |
編輯 收藏
今天親愛的糖糖加入了~歡迎下~(還在UT里聽到了糖糖的聲音)
這幾天因為確實沒怎么看教程,也沒有很細致的考慮瑪麗醫生,筆記就耽擱下了,不過我一直在看Q群里的聊天記錄,因為對瑪麗醫生的考慮沒有具體到偽代碼,技術方面的感想不是很多(以后再回頭翻看的時候 應該會獲益匪淺)。
我從5月開始玩WOW,這是一個極其容易讓人投入大量精力的游戲~它培養了我對游戲的興趣,但也占用了我太多的精力,時間的分配并不是最大的問題,精力的轉移是關鍵所在。TT同學最開始邀請我我加入的時候,我的確猶豫和不舍了一下,預想到了沖突和可能的放棄。可我還是需要時間,我向殿下同學請了1—2周的半假,用以結束這個游戲,希望在此期間可以以一件T6結束WOW生涯,和不傷害任何人來結束游戲里的感情。
瑪麗醫生的思路我會盡力在周末想出,訂出進度。
posted @
2008-10-17 01:52 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(134) |
評論 (0) |
編輯 收藏
昨天,哦,今天之前的那篇隨筆上講了一些困境,看起來貌似很揪心的樣子。今天晚上系統地和PureMilk談了一會兒后就覺得,咳,這不是還很明朗的嘛。嘿嘿。
刷新后的思路是這樣子的,嘿,保密。我居然這么惡毒地勾起了大家的興趣。
除了PureMilk外其他人的任務就是在周末前自行設計自己的馬利醫生,交出偽碼來,大家集體評估獲得通過后就定了進度,自個兒吭哧吧。最后馬利醫生的截止日期是本月末+-5天。
糖糖加入了,OpenGL基礎都差不多(PureMilk和寡人除外),菜鳥級~但是美工方面比俺們都要強很多。于是乎,組織又壯大了。說到美工,嘿嘿,糾結了老夫很長時間的那件事情給糖糖一下子就解決掉了。所以嘛,正如俺QQ狀態里說的那樣:神仙掉下來了。一個是貓,一個是糖糖。生活啊有時候總是不經意間給你一些驚喜的,有些事情就是Destined。再次感謝。
還有,我做了個決定,那就是我也加入到編程的大軍中。也就是以后寫到這里的隨筆就更有技術含量了,這種無聊的扯皮性質的哲理散文以后越來越少了。唉,那這次就多寫點兒?嗨,偏不。Over。
posted @
2008-10-16 22:43 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(115) |
評論 (0) |
編輯 收藏
一直總想做點什么東西。因為貪玩所以想做游戲~(ps:某很厲害的人個性簽名點播)
自己程序編的馬馬虎虎。圖畫的一般般。算是沒什么特色的吧~忽然某天發現了游戲策劃~很難的職業~覺得自己滿合條件但是又相去甚遠
不過確實有時候想做的事情不一定能自己做好。人畢竟是群居動物?;ハ嗾勰ゾ突ハ嗾勰グ蓗
至少讓自己知道不是一個人在做些什么~身邊還有很多很多很多很多一起的人~做同樣的事情有同樣的想法向著同樣的目標努力的人
我的新起點~燃燒吧~小宇宙~~哇卡卡卡~~(ps:本糖很懶滴。。。大家多督促額。。多多包涵啦~~我會努力改變龜爬的看書速度滴)
posted @
2008-10-16 22:35 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(91) |
評論 (0) |
編輯 收藏
這段程序就是畫了一個三角形,想讓鍵盤控制它來上下左右運動,但是無論怎么欽按鈕他都不運動,非常郁悶,請求支援。謝謝
#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 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(156) |
評論 (0) |
編輯 收藏
啟示著一個問題我已經困擾我很久了。對于glPushMatrix和glPopMatrix我很想知道他們之間的代碼是怎么執行的。比如 :
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); //把當前矩陣移到(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();
}
為什么在球還沒有畫出來的時候就已經開始切割了?
glPushMatrix(),glPopMatrix()都是對當前矩陣進行操作,但是什么是當前矩陣?是不是跟物體本身所在坐標系有關系?
posted @
2008-10-16 21:03 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(490) |
評論 (0) |
編輯 收藏
不知道為啥剛寫的沒有了,寫第二遍的東西就有點很乏味了。提綱挈領的交代一下吧。
俺的偽碼寫完畢了,請大人們給點意見。
PureMilk的代碼俺看了,居然能看個差不多,但是不明白為什么主函數里沒怎么調用子函數就能實現呢?感覺這就是幾個函數的羅列啊。神奇,再請大人們指點下。
進度表在參差的時候不能對齊??赡墁F在需要調整了。兩套:一個是PureMilk按照自己那個代碼的流程給他倆制定一個進度表,第二個就是他倆自己按照自己的思路制定各自的進度表。晚上公投~~
另外隱約中感受到到了一個結了,需要解開。麥伊的半假,唉。不過,總之,大家要加油。一定加油~~
posted @
2008-10-16 17:12 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(115) |
評論 (4) |
編輯 收藏
說得好像是一個西方的農場主,他家的一片樹林里面生了蟲子,于是他請了一批工人來幫他捉蟲子。付給的工錢是根據他們捉蟲子得多少。結果一段時間過去了,農場主驚奇的發現樹林里的蟲子非但沒有減少,反而增加了。這就不得不提到工人們的“創意”,他們知道捉的蟲子越多得到的工錢也就越多,至于蟲子是從哪兒來的就不管了。于是他們把自己家的蟲子也捉來也放到了樹上,這樣他們就可以在樹上捉到更多的蟲子從而得到更多的工錢。
(后面還有一段就省了,大家自由發揮想象吧)
posted @
2008-10-15 21:42 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(119) |
評論 (1) |
編輯 收藏