资源简介
用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) //画当前方块,参数为当前方块的最左下格 左下角坐标
{
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) //画已累积的方块,从左下角开始,参数为最左下格子 左下角坐标
{
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; //保证只执行一次,得到方块 初始化 时的左下角坐标
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() //执行画 框线 已累积的方块 当前方块
{
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) //保证执行次数,每次生成新方块时
{
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音乐播放器源码
- 下一篇:软件质量保证和管理期末考试试卷
相关资源
- 汇编俄罗斯方块程序汇编 俄罗斯方块
- opengl实现俄罗斯方块
- 俄罗斯方块汇编绝对的经典
- 俄罗斯方块2.0版 支持局域网联机对战
- 体验引擎 游戏设计全景探秘
-
Actionsc
ript3.0做的Flash小游戏 俄罗斯 - Pygame游戏源代码:俄罗斯方块
- OpenCV-俄罗斯方块
- 俄罗斯方块课程设计报告
- 网络课程设计基于Linux的五子棋游戏开
- 汇编语言课程设计实验报告 拼图游戏
- 俄罗斯方块AI源代码以及设计文档
- 人工智能实验报告 五子棋游戏
- qt写的俄罗斯方块完整代码
- 使用labview制作俄罗斯方块
- Kinect俄罗斯方块源代码及项目
- 俄罗斯方块系统需求规格说明书
- vc俄罗斯方块
- 基于QT实现俄罗斯方块游戏。代码只有
- 五子棋人机博弈 游戏
- 俄罗斯方块源码
- 使用socket实现的五子棋游戏
- 俄罗斯方块vc2008源码
- 16*16点阵俄罗斯方块
- 汇编语言课程设计实验报告——拼图
- 汇编语言贪吃蛇、俄罗斯方块双任务
- 传智播客版俄罗斯方块源代码
- Unity3D/2D游戏开发从0到1
- 井字棋/一字棋游戏的源程序完整版含
- flash俄罗斯方块
评论
共有 条评论