JAVA俄罗斯方块程序设计
整理:yaobaiwang.com 时间:07月17日
[JAVA设计的五子棋源程序]java编写五子棋程序:import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*; class PaintPanel extends JPanel...+阅读
JAVA俄罗斯方块程序设计
import java.awt.*; import java.awt.event.*; //俄罗斯方块类 public class ERS_Block extends Frame{ public static boolean isPlay=false; public static int level=1,score=0; public static TextField scoreField,levelField; public static MyTimer timer; GameCanvas gameScr; public static void main(String[] argus){ ERS_Block ers = new ERS_Block("俄罗斯方块游戏 V1.0 Author:Vincent"); WindowListener win_listener = new WinListener(); ers.addWindowListener(win_listener); } //俄罗斯方块类的构造方法 ERS_Block(String title){ super(title); setSize(600,480); setLayout(new GridLayout(1,2)); gameScr = new GameCanvas(); gameScr.addKeyListener(gameScr); timer = new MyTimer(gameScr); timer.setDaemon(true); timer.start(); timer.suspend(); add(gameScr); Panel rightScr = new Panel(); rightScr.setLayout(new GridLayout(2,1,0,30)); rightScr.setSize(120,500); add(rightScr); //右边信息窗体的布局 MyPanel infoScr = new MyPanel(); infoScr.setLayout(new GridLayout(4,1,0,5)); infoScr.setSize(120,300); rightScr.add(infoScr); //定义标签和初始值 Label scorep = new Label("分数:",Label.LEFT); Label levelp = new Label("级数:",Label.LEFT); scoreField = new TextField(8); levelField = new TextField(8); scoreField.setEditable(false); levelField.setEditable(false); infoScr.add(scorep); infoScr.add(scoreField); infoScr.add(levelp); infoScr.add(levelField); scorep.setSize(new Dimension(20,60)); scoreField.setSize(new Dimension(20,60)); levelp.setSize(new Dimension(20,60)); levelField.setSize(new Dimension(20,60)); scoreField.setText("0"); levelField.setText("1"); //右边控制按钮窗体的布局 MyPanel controlScr = new MyPanel(); controlScr.setLayout(new GridLayout(5,1,0,5)); rightScr.add(controlScr); //定义按钮play Button play_b = new Button("开始游戏"); play_b.setSize(new Dimension(50,200)); play_b.addActionListener(new Command(Command.button_play,gameScr)); //定义按钮Level UP Button level_up_b = new Button("提高级数"); level_up_b.setSize(new Dimension(50,200)); level_up_b.addActionListener(new Command(Command.button_levelup,gameScr)); //定义按钮Level Down Button level_down_b =new Button("降低级数"); level_down_b.setSize(new Dimension(50,200)); level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr)); //定义按钮Level Pause Button pause_b =new Button("游戏暂停"); pause_b.setSize(new Dimension(50,200)); pause_b.addActionListener(new Command(Command.button_pause,gameScr)); //定义按钮Quit Button quit_b = new Button("退出游戏"); quit_b.setSize(new Dimension(50,200)); quit_b.addActionListener(new Command(Command.button_quit,gameScr)); controlScr.add(play_b); controlScr.add(level_up_b); controlScr.add(level_down_b); controlScr.add(pause_b); controlScr.add(quit_b); setVisible(true); gameScr.requestFocus(); } } //重写MyPanel类,使Panel的四周留空间 class MyPanel extends Panel{ public Insets getInsets(){ return new Insets(30,50,30,50); } } //游戏画布类 class GameCanvas extends Canvas implements KeyListener{ final int unitSize = 30; //小方块边长 int rowNum; //正方格的行数 int columnNum; //正方格的列数 int maxAllowRowNum; //允许有多少行未削 int blockInitRow; //新出现块的起始行坐标 int blockInitCol; //新出现块的起始列坐标 int [][] scrArr; //屏幕数组 Block b; //对方快的引用 //画布类的构造方法 GameCanvas(){ rowNum = 15; columnNum = 10; maxAllowRowNum = rowNum - 2; b = new Block(this); blockInitRow = rowNum - 1; blockInitCol = columnNum/2 - 2; scrArr = new int [32][32]; } //初始化屏幕,并将屏幕数组清零的方法 void initScr(){ for(int i=0;i= columnNum) return(-1); else return(scrArr[row][col]); } //返回新块的初始行坐标方法 public int getInitRow(){ return(blockInitRow); //返...
C俄罗斯方块程序
#include//windows.h文件中包含应用程序中所需的数据类型和数据结构的定义#include//包含SetTimer()、KillTimer()等关于定时器的函数#include#define CELL 15 // 【方格】的边长(pix) #define W 20 // 游戏区宽(12个【方格】边长,8个格子用来绘制"下一个"方块)#define H 26 // 游戏区高(26个【方格】边长)#define MS_NEWBLOCK WM_USER+1 // 消息ID,产生新的【方块】#define MS_DRAW WM_USER+2 // 消息ID,用来画【方块】#define MS_NEXTBLOCK WM_USER+3 //消息ID,用来显示下一个【俄罗斯方块】形状//------------------------窗口函数的说明------------------------LRESULT CALLBACK WndProc ( HWND, UINT, WPARAM, LPARAM); //---------------------------------------------------------------int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ static char AppName[]="ToyBrick"; //窗口类名 HWND hwnd; MSG msg; //消息结构 WNDCLASSEX wndclass; //窗口类 int iScreenWide; //定义一个整型变量来取得窗口的宽度 wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW|CS_VREDRAW;//窗口类型 //CS_HREDRAW :Redraws the entire window if a movement or size // adjustment changes the width of the client area. //CS_VREDRAW :Redraws the entire window if a movement or size // adjustment changes the height of the client area. wndclass.lpfnWndProc = WndProc; //窗口处理函数为 WndProc wndclass.cbClsExtra = 0; //窗口类无扩展 wndclass.cbWndExtra = 0; //窗口实例无扩展 wndclass.hInstance = hInstance; //当前实例句柄 wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); //默认图标 wndclass.hCursor = LoadCursor (NULL,IDC_ARROW); //箭头光标 wndclass.hbrBackground = (HBRUSH)GetStockObject (BLACK_BRUSH); //背景为黑色 wndclass.lpszMenuName = NULL; //窗口中无菜单 wndclass.lpszClassName = AppName; //类名为"ToyBrick" wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); //----------------------------------窗口类的注册----------------------------------------- if(!RegisterClassEx (&wndclass)) //如果注册失败则发出警报声音,返回FALSE { MessageBeep(0); return FALSE; } // 获取显示器分辨率的X值iScreenWide,将程序窗口置于屏幕中央 iScreenWide=GetSystemMetrics (SM_CXFULLSCREEN); hwnd =CreateWindow ( AppName, //窗口类名 "四面楚歌制作", //窗口实例的标题名 WS_MINIMIZEBOX|WS_SYSMENU , //窗口的风格 iScreenWide/2-W*CELL/2, //窗口左上角横坐标(X) CELL, //窗口左上角纵坐标(Y) W*CELL, //窗口的宽 H*CELL, //窗口的高 NULL, //窗口无父窗口 NULL, //窗口无主菜单 hInstance, //创建此窗口的应用程序的当前句柄 NULL //不使用该值 ); if(!hwnd) return FALSE; //显示窗口 ShowWindow (hwnd,iCmdShow); //绘制用户区 UpdateWindow (hwnd); MessageBox(hwnd," 开始游戏\n\n OH YEAH","开始",MB_OK); SendMessage(hwnd,MS_NEWBLOCK,0,0); SetTimer (hwnd, 1, 100,NULL); //消息循环 while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } //消息循环结束即程序终止时将消息返回系统 return msg.wParam; }// 函数DrawRact: 画【正方形】----- (□)// 参数: 设备环境句柄和【正方形】的四角坐标void DrawRect (HDC hdc, int l, int t, int r, int b){ MoveToEx (hdc, l, t, NULL); //将光标移动到(l,t) LineTo (hdc, r, t); LineTo (hdc, r, b); LineTo (hdc, l, b); LineTo (hdc, l,t);}// 函数DrawCell: 画【方格】-----(红色■)// 参数: 设备环境句柄和【方格】的四角坐标void DrawCell (HDC hdc, int l, int t, int r, int b){ HBRUSH hbrush; hbrush=CreateSolidBrush(RGB(255,0,0)); // 红色画刷 SelectObject(hdc,hbrush); Rectangle(hdc,l, t, r, b); DeleteObject (hbrush);}//绘出游戏区域的方格,其中包括"游戏空间"和"显示下一个【方块】空间"//此函数包含在Cover函数中。
参数:设备环境句柄void DrawGamePlace(HDC hdc){ int i,j; HPEN hpen1,hpen2; hpen1=CreatePen(PS_SOLID,1,RGB(0,255,0)); hpen2=CreatePen(PS_DASHDOTDOT,3,RGB(0,0,255)); //绘制分割线 SelectObject(hdc,hpen2); MoveToEx(hdc,(W-8)*CELL,0,NULL); LineTo(hdc,(W-8)*CELL,H*CELL); //绘制游戏区域方格线(绿色) SelectObject(hdc,hpen1); for (i=1; i
java俄罗斯方块
import java.awt.*;import java.awt.event.*;//俄罗斯方块类public class Mytest extends Frame{ public static boolean isPlay=false; public static int level=1,score=0; public static TextField scoreField,levelField; public static MyTimer timer; GameCanvas gameScr; public static void main(String[] argus){ Mytest ers = new Mytest("俄罗斯方块游戏"); WindowListener win_listener = new WinListener(); ers.addWindowListener(win_listener); }// 俄罗斯方块类的构造方法 Mytest(String title){ super(title); setSize(600,480); setLayout(new GridLayout(1,2)); gameScr = new GameCanvas(); gameScr.addKeyListener(gameScr); timer = new MyTimer(gameScr); timer.setDaemon(true); timer.start(); timer.suspend(); add(gameScr); Panel rightScr = new Panel(); rightScr.setLayout(new GridLayout(2,1,0,30)); rightScr.setSize(120,500); add(rightScr);// 右边信息窗体的布局 MyPanel infoScr = new MyPanel(); infoScr.setLayout(new GridLayout(4,1,0,5)); infoScr.setSize(120,300); rightScr.add(infoScr);// 定义标签和初始值 Label scorep = new Label("分数:",Label.LEFT); Label levelp = new Label("级数:",Label.LEFT); scoreField = new TextField(8); levelField = new TextField(8); scoreField.setEditable(false); levelField.setEditable(false); infoScr.add(scorep); infoScr.add(scoreField); infoScr.add(levelp); infoScr.add(levelField); scorep.setSize(new Dimension(20,60)); scoreField.setSize(new Dimension(20,60)); levelp.setSize(new Dimension(20,60)); levelField.setSize(new Dimension(20,60)); scoreField.setText("0"); levelField.setText("1");// 右边控制按钮窗体的布局 MyPanel controlScr = new MyPanel(); controlScr.setLayout(new GridLayout(5,1,0,5)); rightScr.add(controlScr);// 定义按钮play Button play_b = new Button("开始游戏"); play_b.setSize(new Dimension(50,200)); play_b.addActionListener(new Command(Command.button_play,gameScr));// 定义按钮Level UP Button level_up_b = new Button("提高级数"); level_up_b.setSize(new Dimension(50,200)); level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));// 定义按钮Level Down Button level_down_b =new Button("降低级数"); level_down_b.setSize(new Dimension(50,200)); level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr));// 定义按钮Level Pause Button pause_b =new Button("游戏暂停"); pause_b.setSize(new Dimension(50,200)); pause_b.addActionListener(new Command(Command.button_pause,gameScr));// 定义按钮Quit Button quit_b = new Button("退出游戏"); quit_b.setSize(new Dimension(50,200)); quit_b.addActionListener(new Command(Command.button_quit,gameScr)); controlScr.add(play_b); controlScr.add(level_up_b); controlScr.add(level_down_b); controlScr.add(pause_b); controlScr.add(quit_b); setVisible(true); gameScr.requestFocus(); }}//重写MyPanel类,使Panel的四周留空间class MyPanel extends Panel{ public Insets getInsets(){ return new Insets(30,50,30,50); }}//游戏画布类class GameCanvas extends Canvas implements KeyListener{ final int unitSize = 30; //小方块边长 int rowNum; //正方格的行数 int columnNum; //正方格的列数 int maxAllowRowNum; //允许有多少行未削 int blockInitRow; //新出现块的起始行坐标 int blockInitCol; //新出现块的起始列坐标 int [][] scrArr; //屏幕数组 Block b; //对方快的引用// 画布类的构造方法 GameCanvas(){ rowNum = 15; columnNum = 10; maxAllowRowNum = rowNum - 2; b = new Block(this); blockInitRow = rowNum - 1; blockInitCol = columnNum/2 - 2; scrArr = new int [32][32]; }// 初始化屏幕,并将屏幕数组清零的方法 void initScr(){ for(int i=0;i= columnNum) return(-1); else return(scrArr[row][col]); }// 返回新块的初始行坐标方法 public int getInitRow(){ return(blockInitRow); //返回新块的初始行坐标 }// 返回新块的初始列坐...
以下为关联内容:
俄罗斯方块 Java程序源代码Java俄罗斯方块的源代码能在eclipse上运行的:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Els extends JFrame implements KeyListene...
俄罗斯方块拉动可以消失的游戏叫什么为什么俄罗斯方块要叫俄罗斯方块:方块消消消。一款方块消除的小游戏,消除的原则非常简单,同色的可以消除,不同色的也可以消除哦,不过,同色消除分数会更高啊!如何开始游戏载入后,点击...
vb俄罗斯方块中的一段看不懂。画矩形,第一个矩形左上点为((j + intXCur) * 20 + 2, (i + intYCur) * 20 + 2),右下点为((j + intXCur) * 20 + 19, (i + intYCur) * 20 + 19), 线的颜色为黑色 第二个矩形左上点为((j +...
俄罗斯方块拼图对幼儿的意义一、设计意图:“几何图形”是数学活动的重要内容,经过学习,孩子已初步认识了基础图形,而且对这些图形有较浓的兴趣,当我把各种图形展现在孩子们面前时,他们都能自发的拼出一些简单...
这是vb俄罗斯方块里面的代码用vb程序开发俄罗斯方块不光要代码要有登陆有密码连接:Private Sub setblock() ReDim blockarray(6) Dim intcount As Integer blockarray(0).intblockarray(0, 2, 1) = 1 '...
俄罗斯方块是俄罗斯人发明的吗顾名思义,俄罗斯方块自然是俄罗斯人发明的。这位伟人叫做阿列克谢·帕基特诺夫(Alexey Pazhitnov) 。 然而,很少有人知道,这个著名的游戏在80年代曾经在法律界掀起轩然大波,那就是...
跪俄罗斯方块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实现俄罗斯方块游戏C编俄罗斯方块方块旋转的程序:简单说一下算法: 俄罗斯方块由四个小方块组成,假设你定义没每个小方块大小为20 * 20px,方块活动区域大小为:300宽 * 400高,那么你需要定义一个bool型...