您当前的位置:首页资讯小游戏正文

俄罗斯方块在线游戏游戏介绍,怎么玩?

放大字体  缩小字体 发布日期:2019-04-07 08:10:45 来源:惊鸿信息网 浏览次数:381
关于俄罗斯方块在线游戏游戏介绍,怎么玩?内容

目录

1、求一个俄罗斯方块游戏的程序
2、用c++编写一个俄罗斯方块小游戏,能在codeblocks上运行
3、求用C或C++编一个小游戏(如俄罗斯方块)的全过程,需要学习哪些书籍啊,要有界面
4、一款小游戏,和俄罗斯方块很像
5、求人体俄罗斯方块小游戏,就是俩人OOXX对上就可以消掉的那个。hjj.1017@163.com
6、在小游戏中俄罗斯方块哪种模式是正常的??
7、超高分!说几个你喜欢的经典好玩的小游戏 例如 俄罗斯方块 贪吃蛇
8、找一款用火车拉着俄罗斯方块的小游戏哪有
9、一个跟俄罗斯方块一样的小游戏,上面全部是空的方格,下边是各种各样的方块,方块每次一组,一组三个小组

 

1、求一个俄罗斯方块游戏的程序


来百度贴吧俄罗斯方块吧吧……这里有bz自己制作的俄罗斯方块游戏。。。也有一群程序员……俄罗斯方块程序轮廓就是每一帧的处理 方块下落 锁定延迟 旋转 旋转判定 消行完了。。

2、 用c++编写一个俄罗斯方块小游戏,能在codeblocks上运行


#include <iostream>
#include <windows.h>
#include <vector>
#include <mmsystem.h>
#include <cstdio>

#pragma comment(lib, "winmm.lib")
using namespace std;

#define GameW 10
#define GameH 20
const int CtrlLeft = GameW*2+4 + 3;

struct Point {
Point(){}
Point(int x, int y) {_x = x, _y = y;}
int _x, _y;
};

HANDLE g_hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE g_hInput = GetStdHandle(STD_INPUT_HANDLE);

Point g_ptCursor(0,0);
BOOL isChecking = FALSE;
BOOL g_bGameOver = FALSE;
int g_nGameBack[GameH][GameW], Case;
int nowKeyInfo = -1;
int g_nDiff = 1;
int g_nLife = 2;
int g_nScore = 0;

void SetCursor(COORD cd) {
SetConsoleCursorPosition(g_hOutput, cd);
}
void SetCursor(int x, int y){
COORD cd = {x, y};
SetCursor(cd);
}
void SetBlockCursor(int x, int y){
COORD cd = {2*x + 2, y + 1};
SetCursor(cd);
}

void SetBack(int x, int y, BOOL bk) {
SetBlockCursor(x, y);
if (bk)
printf("%s", "■");
else
printf(" ");
}

bool Out(int x, int y) {
return x < 0 || y < 0 || x >= GameW || y >= GameH;
}

struct xBlock {
public:
int len;
int nowRotateID;
BOOL mask[4][4][4];
static vector <xBlock> List;

xBlock() { len = 0; }
xBlock(int l, char *str) {
int i, j, k;
len = l;
memset(mask, FALSE, sizeof(mask));
for (i = 0; i < l; i++) {
for (j = 0; j < l; j++) {
mask[0][i][j] = str[i*l + j] - '0';
}
}
for (k = 1; k < 4; k++) {
for (i = 0; i < len; i++) {
for (j = 0; j < len; j++) {
mask[k][i][j] = mask[k-1][j][len-1-i];
}
}
}
nowRotateID = rand() % 4;
}

void rotate() {
nowRotateID ++;
if (nowRotateID >= 4)
nowRotateID = 0;
}

BOOL getUnit(int x, int y, int roID) {
if (roID == -1) {
roID = nowRotateID;
}
return mask[roID][y][x];
}
};

vector <xBlock> xBlock::List;

class Block {
public:
int x, y;
int ID;
xBlock bk;

void reset(xBlock *pbk) {
bk = *pbk;

x = 4, y = 0;
ID = ++ Case;

if (collide(0,0)) {
lifeDown();
}
draw();

*pbk = xBlock::List[rand() % xBlock::List.size()];
}

void lifeDown() {
int i, j;
for (i = 0; i < GameH; i++) {
for (j = 0; j < GameW; j++) {
SetBack(j, i, TRUE);
Sleep(10);
}
}
if (g_nLife) {
g_nLife --;
for (i = g_nLife; i < 6; i++) {
SetCursor(CtrlLeft + i, 15);
printf("%c", ' ');
}
for (i = GameH-1; i >= 0; i--) {
for (j = GameW-1; j >= 0; j--) {
SetBack(j, i, FALSE);
Sleep(10);
g_nGameBack[i][j] = 0;
}
}
}else {
g_bGameOver = TRUE;
}
}

void erase() {
int i, j;
for (i = 0; i < bk.len; i++) {
for (j = 0; j < bk.len; j++) {
if (bk.getUnit(j, i, -1)) {
if (! Out(j+x, i+y) && g_nGameBack[i+y][j+x]) {
SetBack(j+x, i+y, FALSE);
g_nGameBack[i+y][j+x] = 0;
}
}
}
}
}
void draw() {
int i, j;
for (i = 0; i < bk.len; i++) {
for (j = 0; j < bk.len; j++) {
if (bk.getUnit(j, i, -1)) {
if (! Out(j+x, i+y) && ! g_nGameBack[i+y][j+x]) {
SetBack(j+x, i+y, TRUE);
g_nGameBack[i+y][j+x] = ID;
}
}
}
}
}
void draw(int x, int y) {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
SetCursor(x + 2*j, y + i);
if (bk.getUnit(j, i, -1)) {
printf("%s", "■");
}else
printf(" ");
}
}
}
bool collide(int dx, int dy, int roID = -1) {
int i, j;
for (i = 0; i < bk.len; i++) {
for (j = 0; j < bk.len; j++) {
if (bk.getUnit(j, i, roID)) {
Point ptPos(j + x + dx, i + y + dy);
if (Out(ptPos._x, ptPos._y)
|| g_nGameBack[ptPos._y][ptPos._x] && ID != g_nGameBack[ptPos._y][ptPos._x]) {
return TRUE;
}
}
}
}
return FALSE;
}

void rotate(int nTimes = 1) {
int nextro = (bk.nowRotateID + nTimes) % 4;
if (collide(0, 0, nextro)) {
return ;
}
Beep(12000, 50);
erase();
bk.nowRotateID = nextro;
draw();
}

BOOL changepos(int dx, int dy) {
if (collide(dx, dy)) {
return FALSE;
}
erase();
x += dx;
y += dy;
draw();
return TRUE;
}
};

void GameInit() {
CONSOLE_CURSOR_INFO cursor_info;
cursor_info.bVisible = FALSE;
cursor_info.dwSize = 100;
SetConsoleCursorInfo(g_hOutput, &cursor_info);
xBlock::List.push_back(xBlock(3, "010111000"));
xBlock::List.push_back(xBlock(3, "110110000"));
xBlock::List.push_back(xBlock(3, "111001000"));
xBlock::List.push_back(xBlock(3, "111100000"));
xBlock::List.push_back(xBlock(3, "110011000"));
xBlock::List.push_back(xBlock(3, "011110000"));
xBlock::List.push_back(xBlock(4, "1000100010001000"));
}

void Drawframe(int x, int y, int nWidth, int nHeight) {
int i;
for (i = 0; i < nWidth; i++) {
SetCursor(x + 2*i + 2, y);
printf("%s", "一");
SetCursor(x + 2*i + 2, y + nHeight+1);
printf("%s", "┄");
}
for (i = 0; i < nHeight; i++) {
SetCursor(x, y + i + 1);
printf("%s", "┆");
SetCursor(x + nWidth*2+2, y + i + 1);
printf("%s", "┆");
}
SetCursor(x, y);
printf("%s", "┌");
SetCursor(x, y + nHeight+1);
printf("%s", "└");
SetCursor(x + nWidth*2+2, y);
printf("%s", "┐");
SetCursor(x + nWidth*2+2, y + nHeight+1);
printf("%s", "┘");
}

void MissionInit() {
memset(g_nGameBack, FALSE, sizeof(g_nGameBack));
Case = 1;
int i;
Drawframe(0, 0, GameW, GameH);
Drawframe(GameW*2+4, 0, 4, GameH);
SetCursor(CtrlLeft, 2);
printf("Next");

SetCursor(CtrlLeft, 8);
printf("Speed");
for (i = 0; i < g_nDiff; i++) {
SetCursor(CtrlLeft + i, 9);
printf("%c", 1);
}

SetCursor(CtrlLeft, 11);
printf("Score");
SetCursor(CtrlLeft, 12);
printf("%d", g_nScore);

SetCursor(CtrlLeft, 14);
printf("Life");
for (i = 0; i < g_nLife; i++) {
SetCursor(CtrlLeft + i, 15);
printf("%c", 3);
}
}

void Check() {
isChecking = TRUE;
int i, j, k;
vector <int> line;
for (i = 0; i < GameH; i++) {
for (j = 0; j < GameW; j++) {
if (! g_nGameBack[i][j])
break;
}
if (j == GameW) {
line.push_back(i);
}
}
if (line.size()) {
int nCount = 7;
while (nCount --) {
for (i = 0; i < line.size(); i++) {
for (j = 0; j < GameW; j++) {
SetBack(j, line[i], nCount&1);
}
}
Sleep(70);
}
for (i = 0; i < line.size(); i++) {
for (j = 0; j < GameW; j++) {
g_nGameBack[line[i]][j] = 0;
}
}

for (i = 0; i < GameW; i++) {
int next = GameH-1;
for (j = GameH-1; j >= 0; j--) {
for (k = next; k >= 0; k--) {
if (g_nGameBack[k][i])
break;
}
next = k - 1;
BOOL is = (k >= 0);
SetBack(i, j, is);
g_nGameBack[j][i] = is;
}
}

g_nScore += 2*line.size()-1;
SetCursor(CtrlLeft, 12);
printf("%d", g_nScore);

if ( g_nScore >= g_nDiff * g_nDiff * 10) {
if (g_nDiff <= 6)
g_nDiff ++;
}
if ( g_nScore >= 50 * (g_nLife+1)) {
if (g_nLife <= 6)
g_nLife ++;
}
}

isChecking = FALSE;
}
int main() {
Block* obj = new Block();
Block* buf = new Block();

BOOL bCreateNew = FALSE;
int nTimer = GetTickCount();
int LastKeyDownTime = GetTickCount();

GameInit();
MissionInit();

buf -> bk = xBlock::List[rand() % xBlock::List.size()];
while (1) {
if (! bCreateNew) {
bCreateNew = TRUE;
obj -> reset(&buf -> bk);
if (g_bGameOver)
break;
buf -> draw(CtrlLeft - 1, 4);
}
if (GetTickCount() - nTimer >= 1000 / g_nDiff) {
nTimer = GetTickCount();
if (! obj -> collide(0, 1))
obj -> changepos(0, 1);
else {
Check();
bCreateNew = FALSE;
}
}
if (GetTickCount() - LastKeyDownTime >= 100) {
if (FALSE == isChecking) {
LastKeyDownTime = GetTickCount();
if (GetAsyncKeyState(VK_UP)) {
obj -> rotate();
}
if (GetAsyncKeyState(VK_LEFT)) {
obj -> changepos(-1, 0);
}
if (GetAsyncKeyState(VK_RIGHT)) {
obj -> changepos(1, 0);
}
if (GetAsyncKeyState(VK_DOWN)) {
if ( FALSE == obj -> changepos(0, 2) )
obj -> changepos(0, 1);
}
}
}
}
SetCursor(8, 10);
printf("Game Over!");

SetCursor(0, GameH + 3);

while (1) {
if (GetAsyncKeyState(VK_ESCAPE))
break;
}
return 0;
}
 

3、求用C或C++编一个小游戏(如俄罗斯方块)的全过程,需要学习哪些书籍啊,要有界面


C或C++基础要有,而且C和C++的游戏编程原理差不多,但是实现思想却差很多
学C++的话更容易实现。学C的话,实现有一点点难。
要有界面的话,就要学GUI库,C的GUI库有Windows SDK和GTK+,GTK+是跨平台的,Windows SDK是Windows系统专用的。C++的界面比较多一些通用的MFC(Windows系统专用的)、Qt和wxWidgets等等。
不过你要是准备做游戏的话,有几个是要学的SDL、OpenGL和DirectX。
在网上很容易搜索到一些SDL或者OpenGL、DirectX的俄罗斯方块的例子。也都有相应的教程。SDL开发的小游戏比较多。类似以前街机游戏机上的游戏都可以用SDL开发。
刚开始学的时候多看看,选一种适合自己的,再深入学习。
做游戏的话鼓励你用C++,这个比较符合工业标准,同时还要学习Python,比较主流。
哦,还要学数据结构,要不然有些游戏里面的实现方法看不懂。要是游戏比较大的话,你还要学习一些高等数学的知识,尤其是空间几何和线性数学。游戏里面的人物动画基本都是数学矩阵的处理。
 

4、一款小游戏,和俄罗斯方块很像


皮卡丘俄罗斯方块
 

5、求人体俄罗斯方块小游戏,就是俩人OOXX对上就可以消掉的那个。hjj.1017@163.com


哦!那个!我有但是我要 悬赏分:50才告诉你!
 

6、在小游戏中俄罗斯方块哪种模式是正常的??


你好,下面这个站点的小游戏比较新,种类也比较多,要什么都有哦。http://www.h5uc.com/?=wd
 

7、超高分!说几个你喜欢的经典好玩的小游戏 例如 俄罗斯方块 贪吃蛇


摩尔庄园、斗地主、奥比岛、大家来找茬、麻将、QQ飞车、推箱子、五子棋、泡泡龙、跑的快、零用钱大作战、拱猪、够级、对对碰、阿Sue整理厨 ·绿叶妹夹豆 ·疯狂农场 ·萱萱美容院 ·经营派对招待客 ·照顾斑点狗 ·贝贝家的大扫除 ·探宝奇兵之迷窑 ·经营快乐鲜花店 ·疯狂农场之披萨 ·黄金矿工之索马 ·经营开心汉堡店 ·经营花艺小店 ·快乐宠物店 ·无敌球球 ·狗狗养成大作战 ·帅哥争夺大作战 ·晴天出游 ·牛奶宝宝 ·养小猫 ·宠物料理店 ·神迹圣女 ·冰心公主 ·霜冻天使 ·乔伊的世界 ·鲜花七日养成 ·经营美容化妆品 ·情人巧克力 ·甜甜圈饼干店 ·经营小农场2 ·小猪打狐狸 ·MM汉堡店2 ·完美发型屋 ·加油站 ·许愿藤 ·更多的..
 

8、找一款用火车拉着俄罗斯方块的小游戏哪有


好像没什么印象,楼主上3839小游戏看看有么有吧。。。。
 

9、一个跟俄罗斯方块一样的小游戏,上面全部是空的方格,下边是各种各样的方块,方块每次一组,一组三个小组


是这个吗 1010! 苹果上的,也有安卓版本的。下面是关键字

1010!app

1010!安卓版



关键词:

“如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!