摇摆游戏攻略网

关闭导航
首页 > 棋牌益智 > 游戏攻略

VC60环境下的俄罗斯方块C语言源代码

整理:yaobaiwang.com 时间:08月20日

[俄罗斯方块 Java程序源代码]Java俄罗斯方块的源代码能在eclipse上运行的:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Els extends JFrame implements KeyListene...+阅读

VC6 0环境下的俄罗斯方块C语言源代码

#include#include#include#define mDRAW 5 #define mLINE 6 #define mADOWN 7 #define mGEN 8 #define mLEFT 75 #define mRIGHT 77 #define mSPACE 57 #define mDOWN 80 #define mESC 1 #define TIMEINT 2 #define MAXX 9 #define MAXY 30 #define BACKCOLOR BLACK #define WINX 50 #define WINY 470 #define GAP 6 #define AREAX (WINX+GAP) #define AREAY (WINY-GAP) #define BOXW 15 int oldarea[MAXY+1][MAXX]; int area[MAXY+1][MAXX]; int actW,actH,actX,actY; int curX,curY,curColor,curW,curH; int newX,newY,newColor,newW,newH; int active; int box[4][4]; int FORCOLOR; int MESSAGE; int BOX[7][4][4]={ { {1,1,1,1}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,1,0}, {1,0,0,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,1,0}, {0,0,1,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,1,0}, {0,1,0,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,0,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0} },{ {0,1,1,0}, {1,1,0,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,0,0}, {1,1,0,0}, {0,0,0,0}, {0,0,0,0} } }; void init(); void draw(); int genBox(); int getKey(); void lineFull(); int moveLeft(); int moveRight(); int moveDown(); int rotate(); int getW(); int getH(); void clearOldBox(); void putNewBox(); int collisionRotate(int box[][4]); void getMessage(); void dispatchMessage(); int timeCome(); void fallDown(); int gameOver(); main() { int i; init(); do { getMessage(); dispatchMessage(); } while(!gameOver()); getch(); closegraph(); } void getMessage() { if(MESSAGE) return; if(timeCome()) { MESSAGE=mADOWN; return; } if(bioskey(1)) { MESSAGE=bioskey(0)>>8; return; } } void dispatchMessage() { switch(MESSAGE) { case mLEFT: moveLeft();break; case mRIGHT: moveRight();break; case mADOWN: moveDown();break; case mSPACE: rotate();break; case mDOWN: fallDown(); break; case mDRAW: draw();break; case mLINE: lineFull();break; case mGEN: genBox();break; case mESC: closegraph(); exit(0); default: MESSAGE=0; } } void fallDown() { while(active) { moveDown(); draw(); } MESSAGE=mLINE; } int timeCome() { static long tm, old; tm=biostime(0,tm); if(tm-old

我想用VB6 0做一个小游戏俄罗斯方块即可

Private n

(3), m

(3) As Integer 'n

(3)记录游戏区的四个活动方块的编号 'm

(3)记录预览区的四个活动方块的编号 Private situation, situation2, linenum, t As Integer 'situation记录游戏区的方块样式 'situation2记录预览区的方块样式 'linenum记录一次消除的行数 Private Sub hidefang(a As Integer) '定义使方块不可见的过程 Select Case a Case 0 'a=0使游戏区方块不可见 cmdfang(n(0)).Visible = False cmdfang(n

(1)).Visible = False cmdfang(n

(2)).Visible = False cmdfang(n

(3)).Visible = False Case 1 'a=1使预览区方块不可见 cmdfangnext(m(0)).Visible = False cmdfangnext(m

(1)).Visible = False cmdfangnext(m

(2)).Visible = False cmdfangnext(m

(3)).Visible = False End Select End Sub Private Sub showfang(a As Integer) '定义使方块可见的过程 Select Case a Case 0 'a=0使游戏区方块可见 cmdfang(n(0)).Visible = True cmdfang(n

(1)).Visible = True cmdfang(n

(2)).Visible = True cmdfang(n

(3)).Visible = True Case 1 'a=1使预览区方块不可见 cmdfangnext(m(0)).Visible = True cmdfangnext(m

(1)).Visible = True cmdfangnext(m

(2)).Visible = True cmdfangnext(m

(3)).Visible = True End Select End Sub Private Sub clearline() '定义消除整行的过程 For i = 190 To 10 Step -10 If cmdfang(i).Visible = True And _ cmdfang(i + 1).Visible = True And _ cmdfang(i + 2).Visible = True And _ cmdfang(i + 3).Visible = True And _ cmdfang(i + 4).Visible = True And _ cmdfang(i + 5).Visible = True And _ cmdfang(i + 6).Visible = True And _ cmdfang(i + 7).Visible = True And _ cmdfang(i + 8).Visible = True And _ cmdfang(i + 9).Visible = True Then For j = i + 4 To i Step -1 t = 1 cmdfang(j).Visible = False cmdfang(2 * i + 9 - j).Visible = False For k = 1 To 4000 DoEvents Next t = 0 Next linenum = linenum + 1 For j = i - 1 To 0 Step -1 If cmdfang(j).Visible = True Then cmdfang(j).Visible = False cmdfang(j + 10).Visible = True End If Next clearline '为了实现连消数行,这里使用递归调用 End If Next End Sub

俄罗斯方块的由来

1985年6月 工作于莫斯科科学计算机中心的阿列克谢·帕基特诺夫在玩过一个拼图游戏之后受到启发,从而制作了一个以Electronica 60(一种计算机)为平台的俄罗斯方块的游戏。后来经瓦丁·格拉西莫夫(Vadim Gerasimov)移植到PC上,并且在莫斯科的电脑界传播。帕基特诺夫因此开始小有名气。 1986年7月 PC版俄罗斯方块在匈牙利的布达佩斯被当地的一群电脑专家移植到了Apple II 和 Commodore 64 上,这些版本的软件引起了当时英国一个叫Andromeda的游戏公司经理罗伯特·斯坦恩(Robert Stein)的注意,他向帕基特诺夫以及匈牙利的电脑专家们收购了俄罗斯方块的版权,并且在买到版权之前把它们倒手卖给了英国的Mirrorsoft (注意不是Microsoft!) 以及美国的Spectrum Holobyte。 1986年11月 斯坦恩和帕基特诺夫经过谈判,就版权收购问题未取得成果。

斯坦恩甚至直接飞到莫斯科和帕基特诺夫面谈,但是空手而归。由于俄罗斯人对于已经在西方兴起的电子游戏产业知道不多,斯坦恩决定窃取Tetris的版权,于是他放出谣言说这是匈牙利人开发的游戏。 与此同时,PC版的俄罗斯方块已经由英国的Mirrorsoft出品并且在欧洲销售,受到当时人们的极大关注。不仅仅因为这个游戏好玩,而且这是“第一个来自铁幕国家的游戏。”当时的游戏宣传海报上有浓郁的冷战色彩,比如战争画面,加加林太空飞行等。而斯坦恩仍然没有正式合法的版权。 1987年6月 斯坦恩最终取得了在IBM-PC及其兼容机上的Tetris的版权,版权机种包括“其他任何电脑系统”。但是,他没有和苏联方面签署协议,也就是说,这个版权是不完全的。(译者注: 这个“其他任何电脑系统”在原文中的描述是“any other computer system”,这种说法在当时看来也很不严密,从而为后来的产权之争埋下了伏笔) 1988年1月 Tetris在电脑平台的热销,一时造成“洛阳纸贵”的局面。

而当CBS晚报采访了俄罗斯方块之父帕基特诺夫之后,斯坦恩盗窃版权的计划彻底泡汤了。一个新的公司ELORG(Electronorgtechinca,苏联一家软件公司)开始和斯坦恩就游戏程序问题进行协商。ELORG的负责人亚历山大·阿列欣科( Alexander Alexinko)知道斯坦恩虽然没有版权,但是会以手中的游戏开发程序为筹码威胁中断谈判。 1988年5月 经过几个月的争吵之后,筋疲力尽的斯坦恩终于和ELORG签定了PC俄罗斯方块版权的合约。当时的合约禁止开发街机版和掌机版的方块游戏,而电脑版的Tetris则成为当时最畅销的游戏。 1988年7月 斯坦恩与阿列欣科商谈开发街机版俄罗斯方块的问题。阿列欣科当时尚未从斯坦恩那里拿到一分钱的版权费,但是同时的Spectrum 和 Mirrorsoft已经开始向电子游戏商出售了俄罗斯方块的版权。

Spectrum 将Tetris的游戏机和PC在日本的版权卖给了Bullet-Proof Software (FC和GB版俄罗斯方块的制作商),而Mirrorsoft则把它在日本和北美的版权卖给了美国的Atari。这样一来两家公司的矛盾就开始了。1988年11月,BPS在FC上发行的俄罗斯方块(大家不很熟悉的俄罗斯方块1)在日本发售,销量达200万份。 1988年11月 随着GB的开发,NOA(任天堂美国分公司)的经理荒川实(任天堂山内溥老爷子的女婿)希望将Tetris做成GB上的游戏。于是他联系了BPS的总裁亨克·罗杰斯(Henk Rogers),罗杰斯再与斯坦恩联系的时候却吃了闭门羹。于是他直接去莫斯科购买版权。而斯坦恩觉察出风头,也乘飞机前往莫斯科;与此同时,Spectrum的负责人罗伯特·麦克斯韦(Robert Maxwell)的儿子凯文·麦克斯韦(Kevin Maxwell) 也在向莫斯科进发。

就这样,三路人马几乎在同时赶到了冰天雪地的红色都市。 1989年2月21日 罗杰斯首先会见了ELORG的代表叶甫盖尼·别里科夫(Evgeni Belikov,和那个“装在套子里的人”同名)。他给帕基特诺夫等苏联人留下了深刻印象,并且签了手掌机方块游戏的版权。之后他向俄国人展示了FC版Tetris,这使别里科夫极为震惊。因为他并没有授予罗杰斯家用机的版权!罗杰斯则向他们说这是向TENGEN购买的版权,但是别里科夫也从来听说过TENGEN这个公司的名字。罗杰斯为了缓和尴尬的局面,将斯坦恩隐瞒的事实如数告诉了别里科夫,并且答应付给苏联方面更多支票作为已经卖出的FC版俄罗斯方块的版权费用。这时罗杰斯发现自己有机会买到Tetris全部机种的版权(但是当时还没买),虽然Atari会对他虎视眈眈,但是别忘了,他和BPS的背后还有任天堂这个大靠山给自己撑腰。

注意:罗伯特·斯坦恩原先所签的协议只是电脑版Tetris的版权,其他的版权并不是他的。 后来,斯坦恩和ELORG重新签署了协议。别里科夫强迫他重签的合约中修改的内容是:“电脑的定义:包含有中央处理器,监视器,磁盘驱动器,键盘和操作系统的机器”。而斯坦恩当时却没有仔细看这些定义。后来他才意识到这是罗杰斯从自己手中抢走版权而耍的花招。但是为时已晚。第二天他被告知虽然签署的文件已经不能改过来,但是他还可以得到街机版Tetris的开发权。三天之后,他签下了街机版的协议。 1989年2月22日 凯文·麦克斯韦访问了ELORG。别里科...

以下为关联内容:

谁能大致描述一下C语言做俄罗斯方块的思想俄罗斯方块的起源:#include/*标准库*/ #include/*绘图库*/ #include/*BIOS库,输入输出,BIOS时间等*/ #define mDRAW 5 /*各种消息的宏定义*/ #define mLINE 6 #define mADOWN 7...

跪俄罗斯方块JAVA代码我有一个java俄罗斯方块程序玩不了方块不会自动下落还有把一个:连连看java源代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class lianli...

C俄罗斯方块程序卡顿跪俄罗斯方块C语言的解析 WINTC的那种:1、如果你用的是vc写的,windows图形界面:检查一下cpu,如果是cpu占满了一个核心说明你程序效率十分低。每下降一格就整个屏幕重刷一次不应...

想用VC 60动手写俄罗斯方块但不知到如何下手请各位给点思路谁有俄罗斯方块的游戏设计思路啊或者经验。谢谢了:简单说一下算法: 俄罗斯方块由四个小方块组成,假设你定义没每个小方块大小为20 * 20px,方块活动区域大小为:300宽 * 400高,那么...

如何用VC 60实现俄罗斯方块游戏C编俄罗斯方块方块旋转的程序:简单说一下算法: 俄罗斯方块由四个小方块组成,假设你定义没每个小方块大小为20 * 20px,方块活动区域大小为:300宽 * 400高,那么你需要定义一个bool型...

Java俄罗斯方块的源代码能在eclipse上运行的谁有超级俄罗斯方块的过关攻略:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Els extends JFrame implements KeyListener,Runnable {p...

c语言俄罗斯方块代码俄罗斯方块c代码急在线等能运行的:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46...

谁有编好的vc俄罗斯方块程序VC俄罗斯方块代码:俄罗斯方块源程序: #include <graphics.h>#include <stdio.h>#include <dos.h>#include <conio.h>#include <time.h>#include <math.h>#include <stdlib.h>...

跪一个能在VC 60里能运行的俄罗斯方块代码请教俄罗斯方块的C源代码跪谢:#include#include#include#include#includeusing namespace std; #define A1 0//A代表长条型,B为方块,C为L型,D为闪电型(实在无法描述那个形状) #def...

推荐文章