資源簡介
用OpenGL編寫的俄羅斯方塊,運行良好,界面也很不錯。

代碼片段和文件信息
#include?“main.h“
#include?
void?init?()
{
x0?=?200?y0?=?10;
curMatrix_n?=?rand?()?%?7;
for?(int?j?=?0;?j?33;?j++)
{
grid?[j][20]?=?1;
grid?[j][21]?=?1;
grid?[j][22]?=?1;
}
glClearColor?(0.0?0.0?0.0?1.0);
glMatrixMode?(GL_PROJECTION);
gluOrtho2D?(x0-1?x0+viewWidth+1?y0-2?y0+viewHeight+1); //下邊界在下方兩像素處?右邊界在右方兩像素處
glViewport?(x0-1?y0-2?viewWidth+3?viewHeight+3);
}
//********************************************************************************************************************
void?drawSquare?(GLint?x?GLint?y) //畫小正方形
{
glBegin?(GL_QUADS);
glVertex2i?(x?y);
glVertex2i?(x+19?y);
glVertex2i?(x+19?y+19);
glVertex2i?(x?y+19);
glEnd();
}
void?drawCurMatrix?(int?x?int?y) //畫當(dāng)前方塊,參數(shù)為當(dāng)前方塊的最左下格?左下角坐標(biāo)
{
glPushMatrix?();
glColor3f?(0.0?0.6?0.0);
for?(int?k=0;?k<5;?k++)
for?(int?l=0;?l<6;?l++)
{
if?(curMatrix?[curMatrix_n][curMatrix_f][k][l]?==?1)
drawSquare?(x+20*(l-1)?y+20*(k-1));
}
glPopMatrix?();
}
void?drawMatrix?(int?x?int?y) //畫已累積的方塊,從左下角開始,參數(shù)為最左下格子?左下角坐標(biāo)
{
glPushMatrix?();
if?(isOver) //game?over時
glColor3f?(0.5?0.5?0.5);
else
glColor3f?(0.0?0.6?0.0);
for?(int?i=0;?i<20;?i++)
for?(int?j=0;?j<30;?j++)
{
static?int?tmp?=?1; //保證只執(zhí)行一次,得到方塊?初始化?時的左下角坐標(biāo)
if?(tmp==1?&&?i==initCurMatrix_i?&&?j==initCurMatrix_j)
{
initCurMatrix_x?=?x+20*i;
initCurMatrix_y?=?y+20*j;
tmp?=?0;
}
if?(grid?[j][i]?==?1)
drawSquare?(x+20*i?y+20*j);
}
glPopMatrix?();
}
void?draw1() //執(zhí)行畫?框線?已累積的方塊?當(dāng)前方塊
{
glPushMatrix?();
glColor3f?(0.5?0.5?0.5);
glBegin?(GL_LINE_LOOP);
glVertex2i?(x0-1?y0+viewHeight);
glVertex2i?(x0-1?y0-2);
glVertex2i?(x0+viewWidth+1?y0-2);
glVertex2i?(x0+viewWidth+1?y0+viewHeight);
glEnd?();
glPopMatrix?();
for?(int?i?=?0;?i<20;?i++)
{
if?(grid?[29][i]?==?1) //game?over判斷
{
isOver?=?1;
KillTimer?(hWnd?timer);
break;
}
}
drawMatrix?(x0?y0);
if?(!isOver)
{
if?(needNewMatrix) //保證執(zhí)行次數(shù),每次生成新方塊時
{
curMatrix_j?=?initCurMatrix_j;
curMatrix_i?=?initCurMatrix_i;
curMatrix_x?=?initCurMatrix_x;
curMatrix_y?=?initCurMatrix_y;
needNewMatrix?=?0;
}
drawCurMatrix?(curMatrix_x?curMatrix_y);
}
}
//********************************************************************************************************************
void?needCutlayer?()
{
for?(int?j?=?0;?j<30;?j++)
{
int?tmp?=?0;
for?(int?i?=?0;?i<20;?i++)
{
if?(grid?[j][i]?==?1)
tmp++;
}
if?(20?==?tmp)
{
for?(int?k?=?j;?k?30;?k++)
for?(int?l?=?0;?l?20;?l++)
grid?[k][l]?=?grid?[k+1][l];
j--;
}
}//for
}
bool?canMove?(int?direction)
{
switch?(direction)
{
case?DOWN:
for?(int?k=0;?k<5;?k++)
for?(int?l=0;?l<6;?l++)
{
if?(curMatrix?[curMatrix_n][curMatrix_f][k][l]?==?2?||?curMatrix?[curMatrix_n][curMatrix_f][k][l]?==?6?|
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????39424??2008-11-01?21:18??tetris.exe
?????文件???????6774??2008-11-01?21:13??main.cpp
?????文件???????4204??2008-11-01?21:17??main.h
?????文件??????13217??2008-11-01?21:12??7種方塊.xlsx
-----------?---------??----------?-----??----
????????????????63619????????????????????4
- 上一篇:QT4音樂播放器源碼
- 下一篇:軟件質(zhì)量保證和管理期末考試試卷
評論
共有 條評論