求俄罗斯方块c语言代码?要求能够在codeblocks运行c语言上运行,如果能在游戏里添

>> Linux 下C语言俄罗斯方块
Linux 下C语言俄罗斯方块
所属分类:
下载地址:
russia.rar文件大小:13.68 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
Linux下使用C语言编写的俄罗斯方块小游戏。
可以实现全部的方块组合,变形,移动等功能,同时包含积分统计,级别提升,暂停等功能。
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
11.24 kB15-05-14 12:29
34.00 B15-05-14 12:29
119.00 B14-05-14 08:27
386.00 B15-05-14 12:29
rus25.21 kB15-05-14 12:30
560.00 B15-05-14 10:29
3.07 kB15-05-14 12:29
&russia&0.00 B22-08-14 09:10
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
评价成功,多谢!
下载russia.rar
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:67.604ms - init:0.1;find:0.6;t:0.4;tags:0.2;related:37.1;comment:0.2; 5.8
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧C语言俄罗斯方块(简易版) - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 21时,
本俄罗斯方块全部用绘图函数实现方块的绘制,没有一点资源,因此源代码很小巧,整个程序编译链接好,也就10K多吧。非常小巧的俄罗斯方块。
设计思想:
1、将游戏区域划分为18行*10列的棋盘,设立一个布尔型的二维数组变量,以表示棋盘上各个地方是否有方块。
2、用4个顶点代表各种不同形状的方块,一旦方块在游戏区域中,就把对应的布尔型二维数组变量置为真,表示该方格已经有方块了。
3、如上做方便方块移动是否会碰撞的判断。
4、代码已经修正了一个小BUG。
5、压缩包中的文件是未经修改的源代码,此处的代码为最新。
6、方向键上为改变形状,下为直接落到底部。p键为暂停(或者Pause键)
代码片段(3)
Terics.zip&~&3KB&&&&
(1816)&&&&
2.&[图片] 俄罗斯方块.jpg&&&&
3.&[代码]C语言俄罗斯方块&&&&
#include &windows.h& //为了使用API函数
#include &time.h& //为了使用定时器
#include &stdlib.h&
//为了使用随机数
#define BLOCKWIDTH
//单个方块大小
#define NUMLINEBLOCKS 18
#define NUMCOLUMNBLOCKS 10
#define ID_TIMER
1 //定时器ID
#define BLOCKSTYLES
(sizeof (Blocks) / sizeof (Blocks[0]))
//方块的种类数
//游戏区各方格顶点布尔值,代表该方格是否有方块
bool GameClient[NUMCOLUMNBLOCKS][NUMLINEBLOCKS];
static int
F, S, cF, cS; //随机方块图形对应的第一、二纬
static int
//定义各方块形状,以点表示
POINT pt[4];
Blocks[][4] =
0, 0, 1, 0, 1, 1, 1, 2,
2, 0, 0, 1, 1, 1, 2, 1,
1, 0, 1, 1, 1, 2, 2, 2,
0, 1, 1, 1, 2, 1, 0, 2,
1, 0, 2, 0, 1, 1, 1, 2,
0, 1, 1, 1, 2, 1, 2, 2,
1, 0, 1, 1, 0, 2, 1, 2,
0, 0, 0, 1, 1, 1, 2, 1,
1, 0, 1, 1, 1, 2, 1, 3,
0, 1, 1, 1, 2, 1, 3, 1,
1, 0, 1, 1, 1, 2, 1, 3,
0, 1, 1, 1, 2, 1, 3, 1,
0, 0, 1, 0, 1, 1, 2, 1,
2, 0, 1, 1, 2, 1, 1, 2,
0, 0, 1, 0, 1, 1, 2, 1,
2, 0, 1, 1, 2, 1, 1, 2,
1, 0, 2, 0, 0, 1, 1, 1,
1, 0, 1, 1, 2, 1, 2, 2,
1, 0, 2, 0, 0, 1, 1, 1,
1, 0, 1, 1, 2, 1, 2, 2,
0, 0, 1, 0, 0, 1, 1, 1,
0, 0, 1, 0, 0, 1, 1, 1,
0, 0, 1, 0, 0, 1, 1, 1,
0, 0, 1, 0, 0, 1, 1, 1,
1, 0, 0, 1, 1, 1, 2, 1,
0, 0, 0, 1, 1, 1, 0, 2,
0, 0, 1, 0, 2, 0, 1, 1,
1, 0, 0, 1, 1, 1, 1, 2
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
TCHAR szClassName[] = TEXT("Terics"),
szWindowName[] = TEXT("Aka's Terics");
static POINT Block[4];
wndcls.cbClsExtra
wndcls.cbWndExtra
wndcls.hbrBackground = static_cast&HBRUSH&(GetStockObject(WHITE_BRUSH));
wndcls.hCursor
= LoadCursor(hInstance, IDC_ARROW);
wndcls.hIcon
= LoadIcon(hInstance, IDI_APPLICATION);
wndcls.hInstance
wndcls.lpfnWndProc
wndcls.lpszClassName = szClassN
wndcls.lpszMenuName
wndcls.style
= CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
HWND hwnd = CreateWindow(szClassName, szWindowName, WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, (NUMCOLUMNBLOCKS + 10) * BLOCKWIDTH,
(NUMLINEBLOCKS + 3) * BLOCKWIDTH,
NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg, NULL, 0, 0))
TranslateMessage(&msg);
DispatchMessage(&msg);
return msg.wP
//随机数函数定制版,用于随机出现的方块
unsigned Random(int n);
//判断是否可以下落,可以则返回true
bool CanDown(POINT pt[]);
//下落实现
void Down(POINT pt[]);
//判断是否可以左移
bool CanLeft(POINT pt[]);
//实现左移
void Left(POINT pt[]);
//判断是否可以右移
bool CanRight(POINT pt[]);
//实现右移
void Right(POINT pt[]);
//判断是否可以变形
bool CanChange(POINT pt[]);
//实现变形
void Change(POINT pt[]);
//消行处理以及分数结算
void DelSqure(HWND);
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
TericsBorder[] = {-1, -1,
NUMCOLUMNBLOCKS * BLOCKWIDTH + 1, NUMLINEBLOCKS * BLOCKWIDTH + 1};
PAINTSTRUCT
TEXTMETRIC
szNextTerics[] = TEXT("下一个:"),
szSCore[] = TEXT("得分:");
static TCHAR szBufferScore[5];
static int cxChar, cyC
static POINT Block[4], NextBlock[4];
static bool
switch(message)
case WM_CREATE:
hdc = GetDC(hwnd);
GetTextMetrics(hdc, &tm);
cxChar = tm.tmAveCharWidth * 2;
cyChar = tm.tmExternalLeading + tm.tmH
SetTimer(hwnd, ID_TIMER, 600, NULL);
//初始化第一个出现的方块
cS = Random(4);
cF = Random(BLOCKSTYLES);
for(int i = 0; i & 4; ++i)
Block[i].x = Blocks[cF][cS].pt[i].x + 4;
Block[i].y = Blocks[cF][cS].pt[i].y;
GameClient[Block[i].x][Block[i].y] =
S = Random(4);
F = Random(BLOCKSTYLES);
for(int i = 0; i & 4; ++i)
NextBlock[i].x = Blocks[F][S].pt[i].x;
NextBlock[i].y = Blocks[F][S].pt[i].y;
ReleaseDC(hwnd, hdc);
case WM_TIMER:
if(pause) return 0;
if(CanDown(Block))
Down(Block);
//不能下移,需要处理消行判断(结合分数),还需要处理下一个显示,和当前显示的方块
DelSqure(hwnd);
for(int i = 0; i & 4; ++i)
Block[i].x = NextBlock[i].x + 4;
Block[i].y = NextBlock[i].y;
if(GameClient[Block[i].x][Block[i].y])
KillTimer(hwnd, ID_TIMER);
GameClient[Block[i].x][Block[i].y] =
S = Random(4);
F = Random(BLOCKSTYLES);
for(int i = 0; i & 4; ++i)
NextBlock[i].x = Blocks[F][S].pt[i].x;
NextBlock[i].y = Blocks[F][S].pt[i].y;
InvalidateRect(hwnd, NULL, TRUE);
case WM_KEYDOWN:
if(pause && wParam != VK_PAUSE) return 0;
switch(wParam)
case VK_LEFT:
if(CanLeft(Block))
Left(Block);
InvalidateRect(hwnd, NULL, TRUE);
case VK_RIGHT:
if(CanRight(Block))
Right(Block);
InvalidateRect(hwnd, NULL, TRUE);
case VK_UP:
if(CanChange(Block))
Change(Block);
InvalidateRect(hwnd, NULL, TRUE);
case VK_DOWN:
while(CanDown(Block))
Down(Block);
InvalidateRect(hwnd, NULL, TRUE);
case VK_PAUSE:
case WM_CHAR:
if(wParam == 'p')
else if(wParam == 'r')
Score = 0;
for(int x = 0; x & NUMCOLUMNBLOCKS; ++x)
for(int y = 0; y & NUMLINEBLOCKS; ++y)
GameClient[x][y] =
cS = Random(4);
cF = Random(BLOCKSTYLES);
for(int i = 0; i & 4; ++i)
Block[i].x = Blocks[cF][cS].pt[i].x + 4;
Block[i].y = Blocks[cF][cS].pt[i].y;
GameClient[Block[i].x][Block[i].y] =
S = Random(4);
F = Random(BLOCKSTYLES);
for(int i = 0; i & 4; ++i)
NextBlock[i].x = Blocks[F][S].pt[i].x;
NextBlock[i].y = Blocks[F][S].pt[i].y;
InvalidateRect(hwnd, NULL, TRUE);
case WM_PAINT:
//if(pause) return 0;
hdc = BeginPaint(hwnd, &ps);
SetViewportOrgEx(hdc, BLOCKWIDTH, BLOCKWIDTH, NULL);
SelectObject(hdc, GetStockObject(WHITE_BRUSH));
SelectObject(hdc, GetStockObject(BLACK_PEN));
//画俄罗斯方块游戏的边框
Rectangle(hdc, TericsBorder[0].x, TericsBorder[0].y,
TericsBorder[1].x, TericsBorder[1].y);
//输出“下一个”字符串
TextOut(hdc, (NUMCOLUMNBLOCKS + 1) * BLOCKWIDTH, 0, szNextTerics, lstrlen(szNextTerics));
//输出“得分”字符串
TextOut(hdc, (NUMCOLUMNBLOCKS + 1) * BLOCKWIDTH, cyChar + 5 * BLOCKWIDTH,
szSCore, lstrlen(szSCore));
SetTextAlign(hdc, TA_RIGHT | TA_TOP);
TextOut(hdc, (NUMCOLUMNBLOCKS + 1) * BLOCKWIDTH + 3 * cxChar, 2 * cyChar + 5 * BLOCKWIDTH,
szBufferScore, wsprintf(szBufferScore, TEXT("%d"), Score));
SetTextAlign(hdc, TA_LEFT | TA_TOP);
SelectObject(hdc, GetStockObject(BLACK_BRUSH));
SelectObject(hdc, GetStockObject(WHITE_PEN));
//显示游戏区的方块
for(x = 0; x & NUMCOLUMNBLOCKS; ++x)
for(y = 0; y & NUMLINEBLOCKS; ++y)
if(GameClient[x][y])
Rectangle(hdc, x * BLOCKWIDTH, y * BLOCKWIDTH,
(x + 1) * BLOCKWIDTH, (y + 1) * BLOCKWIDTH);
//显示下一个方块区域的方块
for(int i = 0; i & 4; ++i)
Rectangle(hdc, (NextBlock[i].x + NUMCOLUMNBLOCKS + 2) * BLOCKWIDTH, NextBlock[i].y * BLOCKWIDTH + cyChar,
(NextBlock[i].x + NUMCOLUMNBLOCKS + 3) * BLOCKWIDTH, (NextBlock[i].y + 1) * BLOCKWIDTH + cyChar);
EndPaint(hwnd, &ps);
case WM_DESTROY:
PostQuitMessage(0);
return DefWindowProc(hwnd, message, wParam, lParam);
//判断方块是否可以下落
bool CanDown(POINT pt[])
bool result =
//将方块所在格子先假设指定为无方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
for(int i = 0; i & 4; ++i)
//假如继续落下超过下底边界,返回false;或者假如该小方块下落一格已经有方块,结果为false
if(pt[i].y + 1 == NUMLINEBLOCKS || GameClient[pt[i].x][pt[i].y + 1])
//恢复方块所在格子为有方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
//判断是否可以左移
bool CanLeft(POINT pt[])
bool result =
//将方块所在格子先假设指定为无方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
for(int i = 0; i & 4; ++i)
//假如继续左移超过左边边界,返回false;或者假如该小方块左移一格已经有方块,结果为false
if(!pt[i].x || GameClient[pt[i].x - 1][pt[i].y])
//恢复方块所在格子为有方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
//判断是否可以右移
bool CanRight(POINT pt[])
bool result =
//将方块所在格子先假设指定为无方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
for(int i = 0; i & 4; ++i)
//假如继续左移超过左边边界,返回false;或者假如该小方块左移一格已经有方块,结果为false
if(pt[i].x + 1 == NUMCOLUMNBLOCKS || GameClient[pt[i].x + 1][pt[i].y])
//恢复方块所在格子为有方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
//判断是否可以旋转
bool CanChange(POINT pt[])
bool result =
//将方块所在格子先假设指定为无方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
int t = (cS + 1) % 4;
for(int k = 0; k & 4; ++k)
int x = Blocks[cF][t].pt[k].x - Blocks[cF][cS].pt[k].x,
y = Blocks[cF][t].pt[k].y - Blocks[cF][cS].pt[k].y;
if(GameClient[pt[k].x + x][pt[k].y + y] ||
//该方格已经有方块
pt[k].x + x & NUMCOLUMNBLOCKS - 1 ||
//x坐标超越了右边界
pt[k].x + x & 0 ||
//x坐标超越了左边界
pt[k].y + y & NUMLINEBLOCKS - 1)
//y坐标超越了下底边界
//恢复方块所在格子为有方块
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
//实现旋转
void Change(POINT pt[])
int t = (cS + 1) % 4;
for(int i = 0; i & 4; ++i)
int x = Blocks[cF][t].pt[i].x - Blocks[cF][cS].pt[i].x,
y = Blocks[cF][t].pt[i].y - Blocks[cF][cS].pt[i].y;
GameClient[pt[i].x][pt[i].y] =
pt[i].x +=
pt[i].y +=
GameClient[pt[i].x][pt[i].y] =
//实现右移
void Right(POINT pt[])
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
++pt[i].x;
for(int k = 0; k & 4; ++k)
GameClient[pt[k].x][pt[k].y] =
//实现左移
void Left(POINT pt[])
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
--pt[i].x;
for(int k = 0; k & 4; ++k)
GameClient[pt[k].x][pt[k].y] =
//实现方块的下落
void Down(POINT pt[])
for(int i = 0; i & 4; ++i)
GameClient[pt[i].x][pt[i].y] =
++pt[i].y;
for(int k = 0; k & 4; ++k)
GameClient[pt[k].x][pt[k].y] =
//随机数函数定制版
inline unsigned Random(int n)
SYSTEMTIME
GetLocalTime(&st);
srand(st.wMilliseconds);
return rand() %
//消行处理以及分数结算
void DelSqure(HWND hwnd)
int line = 0,
for(int x = NUMLINEBLOCKS - 1; x &= 0; --x)
bool result =
for(int y = 0; y & NUMCOLUMNBLOCKS; ++y)
if(!GameClient[y][x])
//判断是否可以消行
if(result)
while(x & 0)
for(int y = 0; y & NUMCOLUMNBLOCKS; ++y)
GameClient[y][x] = GameClient[y][x - 1];
for(int y = 0; y & NUMCOLUMNBLOCKS; ++y)
GameClient[y][0] =
x = temp + 1;
Score += (line - 1) * 2 + 1;
InvalidateRect(hwnd, NULL, TRUE);
开源中国-程序员在线工具:
初学API,写个俄罗斯方块,巩固下到目前为止所学。
算法不够好,代码也不够优美,大牛们见谅。
2楼:DaPPer 发表于
很好,很强大。
3楼:何梁 发表于
注意:方块定义里有个小错误,那个竖条
&&&&1, 0, 1, 1, 1, 2, 1, 3,& 0, 0, 1, 0, 2, 0, 3, 0,& 1, 1, 1, 1, 1, 2, 1, 3,& 0, 0, 1, 0, 2, 0, 3, 0,
应修改成:
&&&&1, 0, 1, 1, 1, 2, 1, 3,& 0, 0, 1, 0, 2, 0, 3, 0,& 1, 0, 1, 1, 1, 2, 1, 3,& 0, 0, 1, 0, 2, 0, 3, 0,
4楼:何梁 发表于
附件和代码我已经重新修改过了,可以在VS2005以上顺利通过,在VC6上需要改变变量的声明。
5楼:不基道 发表于
&&&&1, 0, 1, 1, 1, 2, 1, 3,& 0, 0, 1, 0, 2, 0, 3, 0,& 1, 1, 1, 1, 1, 2, 1, 3,& 0, 0, 1, 0, 2, 0, 3, 0,
是怎么显示出方块的?
6楼:不基道 发表于
0,1,2,3分别代表啥?
7楼:何梁 发表于
引用来自“不基道”的评论0,1,2,3分别代表啥?代表坐标呀,是指原始坐标,就是定义一个4 * 4的网格,按照俄罗斯方块的形状,在该网格内的坐标。当要移动到客户区时,只要增加X和Y轴的坐标即可方便实现移动。
8楼:hexawing 发表于
所以还是整格整格移动的,而不是平滑移动,是吧?
9楼:不基道 发表于
引用来自“何梁”的评论引用来自“不基道”的评论0,1,2,3分别代表啥?代表坐标呀,是指原始坐标,就是定义一个4 * 4的网格,按照俄罗斯方块的形状,在该网格内的坐标。当要移动到客户区时,只要增加X和Y轴的坐标即可方便实现移动。//正7 0, 0, 1, 0, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 2, 2, 2, 0, 1, 1, 1, 2, 1, 0, 2, //反7 那这个“//正7”怎么画到4*4的网格上
10楼:何梁 发表于
引用来自“不基道”的评论引用来自“何梁”的评论引用来自“不基道”的评论0,1,2,3分别代表啥?代表坐标呀,是指原始坐标,就是定义一个4 * 4的网格,按照俄罗斯方块的形状,在该网格内的坐标。当要移动到客户区时,只要增加X和Y轴的坐标即可方便实现移动。//正7 0, 0, 1, 0, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 2, 2, 2, 0, 1, 1, 1, 2, 1, 0, 2, //反7 那这个“//正7”怎么画到4*4的网格上只要空余1列即可呀,4 * 4是为了那个竖条,也就是1字形服务的,其余只要用到3 * 3的网格就够了。
11楼:何梁 发表于
引用来自“hexawing”的评论所以还是整格整格移动的,而不是平滑移动,是吧?实际移动的只有4个方块,不是3*3,或者4*4的网格移动,只是移动了俄罗斯方块的4个组成部分的小方块。例如正7字形,根据其形状,其初始坐标分别为(0,0)、(1,0)、(1, 1)、(1, 2),那么右移一个单位后,坐标改为(1, 0)、(2, 0)、(2, 1)、(2, 2)。即x轴坐标分别+1.同样地,如果是下落一个单位,则y轴坐标分别+1即可。
12楼:何梁 发表于
欢迎大家加入我的API群(此群仅讨论API,不招收MFC爱好者,仅招收用纯API写的爱好者、学习者),群号
13楼:中华田园犬 发表于
好神奇啊啊&
14楼:hexawing 发表于
引用来自“何梁”的评论引用来自“hexawing”的评论所以还是整格整格移动的,而不是平滑移动,是吧?实际移动的只有4个方块,不是3*3,或者4*4的网格移动,只是移动了俄罗斯方块的4个组成部分的小方块。例如正7字形,根据其形状,其初始坐标分别为(0,0)、(1,0)、(1, 1)、(1, 2),那么右移一个单位后,坐标改为(1, 0)、(2, 0)、(2, 1)、(2, 2)。即x轴坐标分别+1.同样地,如果是下落一个单位,则y轴坐标分别+1即可。呃,我的意思是,你的坐标1单位其实是24像素或者32像素,而但凡移动就只能移动1单位,而不能移动1像素这样子,对吧?
15楼:何梁 发表于
引用来自“hexawing”的评论引用来自“何梁”的评论引用来自“hexawing”的评论所以还是整格整格移动的,而不是平滑移动,是吧?实际移动的只有4个方块,不是3*3,或者4*4的网格移动,只是移动了俄罗斯方块的4个组成部分的小方块。例如正7字形,根据其形状,其初始坐标分别为(0,0)、(1,0)、(1, 1)、(1, 2),那么右移一个单位后,坐标改为(1, 0)、(2, 0)、(2, 1)、(2, 2)。即x轴坐标分别+1.同样地,如果是下落一个单位,则y轴坐标分别+1即可。呃,我的意思是,你的坐标1单位其实是24像素或者32像素,而但凡移动就只能移动1单位,而不能移动1像素这样子,对吧?是像素,一个单位的意思是BLOCKWIDTH大小的像素,在文件前部有#define
16楼:hexawing 发表于
哦哦,眼神不好没看到……
我再学习一下……
17楼:何梁 发表于
欢迎大家加入我的API群(此群仅讨论API,不招收MFC爱好者,仅招收用纯API写的爱好者、学习者),群号
18楼:党沛 发表于
19楼:何梁 发表于
引用来自“党沛”的评论不能运行
你用VC6?那需要修改几处变量的定义。用VS2005以上版本测试吧。可以的。
20楼:呵呵小灰灰 发表于
更改哪几处变量啊?我大一刚学c语言!期末作业,俄罗斯方块!
开源从代码分享开始
何梁的其它代码第1页/共5页
换了win7系统后,突然发现VC++6.0不兼容了,我听说有的同学的行,但是我在我自己的电脑上装了不下7、8遍,就差装虚拟机了。索性自己去网上下载了一个Microsoft Visual Studio 2010,想在这个软件上编程。但是环境变化太大了根本不知道怎么用vs2010运行C语言,在网上搜了一下午看的头晕也没看懂到底说的什么东西,有的说编写C语言的时候加些代码,反正各种说法都有,我试了没有成功的。自己研究了一个多星期终于弄懂了,下面把用VS2010运行C语言的详细步骤写下来,希望对现在正在学编程的同学有帮助。本方法应该同样适用VS2005和VS2008.如果电脑配置不太好的话,个人推荐用后两个编程软件,因为VS2010太大,电脑不给力的话会稍微有点卡。VS2008可去编程论坛下载,里面有破解方法,只需注册一个号就行。开始:
1:VS2010启动界面还是跟以前有很大不同的
2:打开文件-&新建-&项目,新建一个项目
第1页/共5页
寻找更多 ""&>&&>&&>&&>&方块C语言源代码--小游戏C源代码+经典俄罗斯方块
方块C语言源代码--小游戏C源代码+经典俄罗斯方块
上传大小:2.1MB
教你使用C语言开发小游戏,轻松易懂一学就会
综合评分:0(0位用户评分)
所需积分:10
下载次数:1
审核通过送C币
创建者:fireblue1990
创建者:ljheee
课程推荐相关知识库
上传者其他资源上传者专辑
课程资源热门标签
VIP会员动态
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:24
可兑换下载积分:48
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
方块C语言源代码--小游戏C源代码+经典俄罗斯方块
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:【图片】【有代码】第二弹------俄罗斯方块【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:286,586贴子:
【有代码】第二弹------俄罗斯方块收藏
之所以说是第二弹,是因为之前用c语言写了个贪吃蛇,发布在c语言贴吧,有兴趣的去串串,也有源码哦图片来自:接下来说俄罗斯方块吧,第一次用c++写,可能对面向对象理解的不好,写的不好还请担待,有什么建议请提出来,谢谢,下面上图图片来自:这个就是了,关于下面这个退出画面,在IDE中运行时可能是这个样子图片来自:图片来自:这个其实我是这么考虑的,当我直接运行编译好的exe文件时,就木有上面这个情况了,按键后就直接退出了,所以是现在这个样子【话不多少,上代码】不宣传QQ群了,刚被删贴了
貌似会火。
新手表示好神奇。。
关于俄罗斯方块,一般是高 20 格,宽 10 格,另外建议用 GetAsyncKeyState 作为控制,操作感会好很多。
LZ牛啊! 如果能简单说下实现思路,就更好了!
哇。。。很赞
楼主辛苦了          就算整个世界都在我手里 却始终觉得自己一无所有!     ✎﹏₯㎕﹏﹏﹏﹏﹏China Mobile Andy Liu                         
—— 街球_风格发表于日
星期六 16时20分19秒154毫秒——
来自于Windows 8系统 & Chrome浏览器
楼主厉害,顶一下
楼主我什么工具编写的,需要啥基础才能编写这
好贴,学习了,收藏*^_^*
问下在Linux如何编译。要修改什么地方
膜拜一下。。。
楼主楼主,我编译你的代码怎么有错嘞?求教
菜鸟求大神解析。SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED);这些大写字母是啥?本人只会c++,要写这个程序还要学啥?
说好的不宣传群号呢
顶!原创要支持!
想问,用codeblocks能运行么?
好屌……能求源码么
号厉害啊多长时间能达到这个地步
呵呵呵呵呵呵呵呵,放假之前一定要做一个贪吃蛇!
你这是用什么编辑器写的,求推荐。MFC么
登录百度帐号推荐应用

我要回帖

更多关于 俄罗斯方块c语言代码 的文章

 

随机推荐