剛學(xué)OpenGL沒有多久就寫了一個(gè)小程序,希望畫一個(gè)三角形然后用鼠標(biāo)控制它上下左右移動(dòng),當(dāng)時(shí)程序時(shí)寫出來了的,但可惜的是無論你按什么鍵,三角形都無法移動(dòng),那個(gè)程序就擱淺了一段時(shí)間。下午的時(shí)候感覺是時(shí)候了,遂重新寫了一遍。中間出現(xiàn)了許多顯而易見的以至于我認(rèn)為我從來都不會(huì)犯的小錯(cuò)誤,很幸運(yùn)的是這些都被我發(fā)現(xiàn)并改掉了。但這些個(gè)錯(cuò)誤改掉之后,三角形依然無法移動(dòng)。無奈之余去吃晚飯,大概是晚飯回來之后吧,又在網(wǎng)上逛了好多遍,查了老些資料。在一次偶然的運(yùn)行下,我驚奇的發(fā)現(xiàn)了它竟然動(dòng)了,高興之余把左右下的鍵全給附上了事件(暫且稱之為事件),然后再次運(yùn)行竟然又驚奇的發(fā)現(xiàn)它又不動(dòng)了。遂又花了老長的時(shí)間搗鼓這個(gè)程序,還是解決不了,只好請教婷婷。好長時(shí)間過去了,沒有得到回復(fù),就在我“心灰意冷”的時(shí)候,她給我檢測出來了錯(cuò)誤。原來我的全局變量取名x,y和keyboard(unsigned key ,int x ,int y)里面的x,y重復(fù)了。當(dāng)時(shí)知道了這個(gè)錯(cuò)誤之后我心里那個(gè)不好受啊,這可是低級錯(cuò)誤啊,竟然犯了,以前寫其它的程序的時(shí)候可都沒犯過啊。但婷婷說這不是低級錯(cuò)誤而是經(jīng)驗(yàn),想想也是哦,自己才寫了多少代碼,大家編寫程序的時(shí)候遇到的程序何止千千萬萬,我才遇到幾個(gè)啊。
這幾乎是一下午加班個(gè)晚上的勞動(dòng)成果,貼上來給大家分享分享。

只是還發(fā)現(xiàn)一個(gè)問題,就是按下a鍵,它不是向左移動(dòng),而是向右移動(dòng),同樣按d鍵而是向左移動(dòng)。
#include <stdlib.h>
#include <gl/glut.h>
//#include <windows.h>
GLfloat i=0.0,j=0.0;
void init()


{
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(0.2f,0.8f,0.6f);
}
void draw()


{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(0.0,0.0);
glVertex2f(0.5,0.0);
glVertex2f(0.5,0.5);
glEnd();
glutSwapBuffers();
}
void display()


{
glPushMatrix();
glLoadIdentity();
glTranslatef(i,j,0);
draw();
glPopMatrix();
glFlush();
}

void keyboard(unsigned char key,int x,int y)


{
switch(key)

{
case 'w':
case 'W':
j+=0.1;
if(j>0.5)
j=0.5;
//display();
glutPostRedisplay();
break;
case 's':
case 'S':
j-=0.1;
if(j<-1.0)
j=-1.0;
//display();
glutPostRedisplay();
break;
case 'a':
case 'A':
i+=0.1;
if(i>0.5)
i=0.5;
//display();
glutPostRedisplay();
break;
case 'd':
case 'D':
i-=0.1;
if(i<-1.0)
i=-1.0;
//display();
glutPostRedisplay();
break;
default :
exit(0);
break;
}
}
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);
glutMainLoop();
return 0;
}
好了就寫到這里,繼續(xù)OpenGL,繼續(xù)瑪麗醫(yī)生。
posted @
2008-10-23 21:07 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(203) |
評論 (2) |
編輯 收藏
今天沒做什么和程序有關(guān)的,非常抱歉
去丫的十佳大學(xué)生,榮譽(yù)都是浮云,我要找準(zhǔn)自己的位置,明確知道自己要的是什么,可不能被這些垃圾的破事兒停住腳步
posted @
2008-10-22 22:19 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(144) |
評論 (1) |
編輯 收藏
瓶子中的藥丸只有兩種,一是當(dāng)前活動(dòng)藥丸,可以通過當(dāng)前活動(dòng)指針來控制藥片的移動(dòng);另一種就是已經(jīng)成為網(wǎng)格一部分的藥片。指向當(dāng)前活動(dòng)藥片的指針,來控制當(dāng)前活動(dòng)藥片的活動(dòng),如果沒有指針指向的話,藥片則成為網(wǎng)格的一部分如果沒有指針指向的話。如果一堆藥片下面的蟲子消掉了,那么這一堆藥片如何往下掉?說得很不明白,還是看看圖吧!(如下圖)如果那個(gè)藍(lán)-綠色的藥片落下來之后,則三個(gè)藍(lán)色藥丸和一個(gè)蟲子消掉。因?yàn)橄x子上面的那兩個(gè)藥丸已經(jīng)是網(wǎng)格的一部分,沒有當(dāng)前活動(dòng)指針的指向,他們怎么會(huì)往下落呢?

說的還是有點(diǎn)亂,請見諒。
posted @
2008-10-22 21:45 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(212) |
評論 (2) |
編輯 收藏
昨天停業(yè)整頓,嘿嘿,俺們這個(gè)團(tuán)伙有了物質(zhì)基礎(chǔ)了,一個(gè)實(shí)驗(yàn)室~~很有味道的。于是昨天大家都忙著打掃衛(wèi)生搬東西還有流汗了,于是出現(xiàn)了更新荒。今天好了,在逐漸邁向正規(guī)之后,效率就比之前要高了,不過更累了,大家加油哈。
來這么早刷屏是因?yàn)檫€有任務(wù)呢,昨天突然被告知有個(gè)啥啥項(xiàng)目申報(bào)需要俺們做,于是乎,吭哧吭哧想方案,在日子就要翻頁的時(shí)候,哈哈哈哈,PureMilk那個(gè)讓人哈哈哈哈的方案讓我哈哈哈哈了一陣子,個(gè)人感覺確實(shí)非常有意義,綜合考慮,很合適。
先這樣,等PureMilk,等領(lǐng)導(dǎo)。寫報(bào)告...
posted @
2008-10-22 08:04 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(116) |
評論 (0) |
編輯 收藏


posted @
2008-10-21 13:20 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(125) |
評論 (1) |
編輯 收藏
今天偷懶了下,才寫了七十行代碼,罪過。反對偷懶。
empty函數(shù)在bottle類里。
bool empty( int x, int y )
{
if ( x<0 || x>=8 || y<0 || y>=16 ) return false;
if ( b_grid_type[y][x] == NOTHING ) return true;
return false;
}
move函數(shù)在doctor類里。
void move( void )
{
switch( d_direct )
{
case DD_DOWN:
if ( d_state )
{
if ( bottle->empty( d_x, d_y+1 ) )
{
++d_y;
break;
}
}
else
{
if ( bottle->empty( d_x, d_y+1 ) && bottle->empty( d_x+1, d_y+1 ) )
{
++d_y;
break;
}
}
/*************這里沒寫完,預(yù)計(jì)是個(gè)while(true)的循環(huán)*********************/
break;
case DD_UP:
if ( d_state )
{
if ( bottle->empty( d_x+1, d_y ) ) d_state = false;
else if ( bottle->empty( d_x-1, d_y ) ) { --d_x; d_state = false; }
}
else
{
if ( bottle->empty( d_x, d_y-1 ) )
{
d_state = true;
Color tmp = d_color[0];
d_color[0] = d_color[1];
d_color[1] = tmp;
}
else if ( bottle->empty( d_x+1, d_y-1 ) )
{
++d_x;
d_state = true;
Color tmp = d_color[0];
d_color[0] = d_color[1];
d_color[1] = tmp;
}
}
break;
case DD_LEFT:
if ( d_state && bottle->empty( d_x-1, d_y ) && bottle->empty( d_x-1, d_y-1 ) ) --d_x;
if ( !d_state && bottle->empty( d_x-1, d_y ) ) --d_x;
break;
case DD_RIGHT:
if ( d_state && bottle->empty( d_x+1, d_y ) && bottle->empty( d_x+1, d_y-1 ) ) --d_x;
if ( !d_state && bottle->empty( d_x+1, d_y ) ) --d_x;
break;
default:
break;
}
}
我在想貓說的話,一天四百行,一年就是12W行。我覺得,寫瑪麗醫(yī)生這種代碼,除了理順?biāo)悸返臅r(shí)候費(fèi)點(diǎn)腦子以外,碼代碼的時(shí)候還是相當(dāng)輕松的,比那些邪門算法輕松多了,一天四百行倒也不是沒有可能呢。婷婷加油,畢業(yè)的時(shí)候一定要拿出至少十萬行代碼來。
posted @
2008-10-20 23:57 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(140) |
評論 (1) |
編輯 收藏
繼續(xù)畫血精靈中~~片片說期待血精靈的瑪麗醫(yī)生呢~~畫了兩個(gè)呢~~還是喜歡可愛的1:2比例的大頭娃娃~~比較可愛呢~~不過姐姐喜歡1:8的。。
加油畫畫ing~~被貓?zhí)釂柦裉烊绾蔚臅r(shí)候~~感覺有點(diǎn)點(diǎn)心虛哈~~沒看as呢。。今天~~看了OpenGL程序設(shè)計(jì)~圖書館借的書呢~~里面一開始就是讀取3DS之類的東東
看著好恐怖額。。光源的設(shè)置啊~~之類的~~不過覺得還是蠻有用的呢~~~今天也是干勁十足呢~~加油畫畫~~
posted @
2008-10-20 22:54 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(132) |
評論 (0) |
編輯 收藏
今天又一次聽到了mvc這個(gè)詞,雖然已經(jīng)聽過一次了,但這次的感覺還是蠻深的。大概的思想就是畫圖和控制分開,真的不錯(cuò),畫圖函數(shù)只管每次把一個(gè)圖畫出來,而不管你是怎么移動(dòng)藥片的。至于具體的實(shí)現(xiàn)估計(jì)還要慢慢摸索。今天晚上要處理一下前一段時(shí)間累積下來的作業(yè),至于瑪麗醫(yī)生嘛,我就盡量在睡覺的時(shí)候想一想,如果到時(shí)候忘掉的話我也就沒辦法了,只好抽空再補(bǔ)上了。
posted @
2008-10-20 21:03 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(232) |
評論 (4) |
編輯 收藏
英語老師:你這語法也太糟糕了吧。
某帥男:報(bào)告~這是程序。
來,開始敲~
#include<gl/glut.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctime>
static int LENGTH=20;
enum Color
{
BLACK,RED,GREEN,YELLOW
}
enum ConnectState
{
Not_Connected,Left_Connected,Right_Connected,Up_Connected,Down_Connected
}
enum GridState
{
EMPTY,CAPSULE,WARM
}
enum MarionState
{
WATE,ACT
}
class Diamonds
{
private:
int x,y;
int color;
int ConnectState;
public:
int getx()
{
return x;
}
int gety()
{
return y;
}
int getColor()
{
color=rand(RED,GREEN,YELLOW);
return color;
}
int getConnectState()
{
return ConnectState;
}
};
class Warm
{
private:
int x,y;
int color=rand(RED,GREEN,YELLOW);
public:
int getx()
{
return x;
}
int gety()
{
return y;
}
int getColor()
{
return color;
}
};
class Bottle //Bottle 類沒想明白呢,只知道開一個(gè)二圍數(shù)組,每個(gè)里面都放上小色塊。
{
private:
public:
};
int CapsuleMade() //膠囊就是這樣拼起來的,初始化了一下,但是感覺缺一些東西
{
Diamonds Capsule[2];
Capsule[0].x=Capsule[1].x-LENGTH;
Capsule[0].ConnectState=Right_Connected;
Capsule[1].ConnectState=Left_Connected;
}
今天的腦細(xì)胞已經(jīng)耗完了,等明天補(bǔ)充吧~~
posted @
2008-10-20 20:44 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(146) |
評論 (2) |
編輯 收藏
今天頭疼了,這說明我思考了。不過也有可能是因?yàn)闆]睡飽。早晨按計(jì)劃三點(diǎn)睡得,因?yàn)橐獙W(xué)OpenGL,嗯還有要體驗(yàn)真正的宵夜。不過,10點(diǎn)的時(shí)候就想睡了,但是為了泡面和我準(zhǔn)備好了的鍋,熬啊熬得熬到了3點(diǎn),就睡了。早晨起來后發(fā)現(xiàn)貓7點(diǎn)的回復(fù),看了后,哈哈哈哈。來,寫偽碼~~
呃...剛才灰人去了,今天還是寫思路吧。
按照貓?zhí)峁┑乃悸罚倚枰鋈虑椤=⒛P蛯ο蟆⑼瓿衫L圖函數(shù)、建立模型與輸入之間以及模型和模型之間聯(lián)系。好,三個(gè)自然段的段意寫好了。
建立模型對象:初級的不修邊幅的瑪麗醫(yī)生他就只需要瓶子(畫成胃更合適貌似)、藥丸、蟲子、瑪麗醫(yī)生四個(gè)模型就好了。瓶子和瑪麗醫(yī)生就是位圖而已(我是這么理解的,或者瓶子內(nèi)部大有文章),主要的就是藥丸和蟲子了,這里說主要是因?yàn)樗鼈兣c后面的輸入、時(shí)間和彼此都有交互,當(dāng)然這就是游戲的最基本的動(dòng)作。重點(diǎn)想這兩個(gè)。藥丸分兩部分,經(jīng)某同學(xué)和某同學(xué)分析它不管怎么旋轉(zhuǎn)也就四種可能,只要記錄一個(gè)點(diǎn)的坐標(biāo)這個(gè)形狀就有了,再隨機(jī)涂上色,這個(gè)藥丸就有了。但是藥丸的兩部分畢竟是兩部分,可以分離的,難道分成兩塊來寫,然后再虛擬拼接起來?看某同學(xué)和某同學(xué)的程序,貌似不是這個(gè)樣子的。問了下某同學(xué)他是拼裝的意思,兩塊拼成一個(gè)數(shù)組。嗯,有道理。呃...剛才又走思去了,那幫人跳來跳去的。也就是開一個(gè)數(shù)組,兩個(gè)就夠了,一個(gè)裝一個(gè)彩色小格子,另一個(gè)裝另一個(gè)彩色小格子。然小格子就是一個(gè)模型對象。哇哦,神奇。這樣有四個(gè)大模塊,其中藥丸是由兩個(gè)小模塊構(gòu)成的。哦也。那就先構(gòu)建小模塊。小模塊它要有三個(gè)屬性,顏色,某固定點(diǎn)坐標(biāo)值,還有一個(gè)用來標(biāo)志有沒有接觸的東西。貓?jiān)谥v東西,于是這么長時(shí)間過去了。繼續(xù)。呃...我真想換行~那就換吧。
藥丸大模塊,它就是一個(gè)數(shù)組。這樣就有編號了,嗯,這就是它的屬性。
蟲子:顏色、坐標(biāo)值,感覺這東西和咱的小模塊沒多大區(qū)別啊,之前想寫成一樣的呢,但是小模塊是動(dòng)的,雖然不是直接控制小模塊而是通過檢測動(dòng)作來重新畫圖的,但是還是不一樣的。不能歸為一類。相似不全等。 神啊~群里邊又活躍了。斷網(wǎng)了要,明天補(bǔ)齊~~
這是耗時(shí)最長的一片隨筆。。
見面&會(huì)剛結(jié)束,思路又一次明朗了。速度地先寫一段路上的交流。
怎么顯示啊?
不是有g(shù)lutDisplayFunc()嗎?
那個(gè)參數(shù)是一個(gè)函數(shù)啊。
不就是寫一個(gè)display()嗎?display()參數(shù)也是一個(gè)函數(shù),就是draw()了啊,draw()參數(shù)就是畫方塊的那個(gè)函數(shù)了,畫方塊的那個(gè)函數(shù)的參數(shù)就是坐標(biāo)和顏色了,坐標(biāo)和顏色就是某模塊的屬性了。
大人們看一下是不是這個(gè)道理。嗯,繼續(xù)昨天的。cout<<"這里就換行了"<<endl;
根據(jù)剛才的會(huì)議精神,這個(gè)瓶子也不是簡單的東西,它就是一個(gè)數(shù)組,形象之后就是一堆格子,初始化完畢的格子。屬性貌似沒有吧,哦,有的,需要有顏色,初始是黑,然后把藥丸的小模塊的顏色給他。
還有誰?瑪麗醫(yī)生?這個(gè)不算了吧,就是導(dǎo)兩個(gè)位圖進(jìn)去,開個(gè)數(shù)組存他的兩個(gè)狀態(tài)。
然后是繪圖函數(shù)。上面說過了,就是draw(),過一個(gè)timer就從瓶子的1行1列開始掃描著畫~~呃...怎么就這么一句。
模型和輸入之間的聯(lián)系的建立:需要按鍵檢測了,這個(gè)也有的,然后它的參數(shù)就是咱自己寫的key(),這個(gè)就是用于改變坐標(biāo)的。還需要把timer看成輸入,貓說的。那也寫進(jìn)key()里。模型和模型之間的聯(lián)系的建立:藥丸之間接觸沒接觸,顏色怎么樣。藥丸和瓶子壁之間接觸沒接觸。藥丸和蟲子之間接觸沒接觸,顏色怎么樣。嗯。就這些了吧。哈哈哈哈,完篇~~看情況寫代碼。
posted @
2008-10-19 22:49 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(194) |
評論 (1) |
編輯 收藏