资源简介
用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音乐播放器源码
- 下一篇:软件质量保证和管理期末考试试卷
相关资源
- flash3.0小游戏
- Scrach 欢乐狙击手.sb2
- OpenGL参考手册
- linux应用层的华容道游戏源代码
- 小鸡快跑游戏.
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- [易语言]游戏多开例程
- 贪吃蛇游戏设计(汇编语言)
- MFC读三维模型obj文件
- VC 游戏编程—附源代码
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- C 纸牌游戏——21点
- 分享 mud 文字游戏 源码
- c 制作的RPG小游戏
- 五子棋游戏实现悔棋功能
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- 找不同FLASH游戏源码
- OpenGL导入贴图的Texture类
- planeGame飞机游戏
- 计算机图形学(openGL)代码
- 拼图游戏源代码 powerbuilder 9.0实例
- 解决WPE进不了游戏的最佳方法(闭屏
- 用OpenGL开发的机械臂运动仿真程序(
- linux扫雷游戏代码
评论
共有 条评论