`
MouseLearnJava
  • 浏览: 465979 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Swing俄罗斯方块游戏(一): 图形选择与变换

阅读更多
俄罗斯方块游戏是一个上手简单,老少皆宜的游戏,它的基本规则是移动、旋转和摆放游戏自动产生的各种方块,使之排列成完整的一行或多行并且消除得分。博文“Swing俄罗斯方块游戏”系列,最终将给出一个简单的俄罗斯方块小游戏,游戏可以保存进度,拥有得分排名等功能。

游戏界面:




本篇博文将介绍一下将俄罗斯方块游戏中需要用到图形选择和变换。


一般来讲,一个图形有四个点,可以表示出常用的“一字型”,“T字型”,“Z字型”以及“L字型”方块。如果用更多的点来表示图形,图形将更加丰富,本文采用的也是四个点去表示图形。

本文实现的俄罗斯方块中,四个点的图形有如下几类:

1. 常用图形-->>








2. 四个点中的一个点或者几个点重合的图形-->>



3. 四个点没有重合的变形图形-->>




这样,用四个点来表示方块的图形也相对比较丰富。游戏中,产生一个随机数来决定下一个产生的方块的图形是什么。

在俄罗斯方块游戏中比较关键的一点就是图形的变换。

本文实现的俄罗斯游戏图形的变换规则如下:
-->>  因为一个图形有四个点来表示,可以先确定其中的一个点的变换位置,然后其它的三个点根据这个确定的基点进行位置调整就可以了。

比如:“T字形”的变换代码如下:

/**
 * @author Eric
 * @vesion 1.0
 * @desc T字型方块
 */
public class RussiaSquareThree extends RussiaSquare {

	private static final long serialVersionUID = 7534480941712004795L;

	public RussiaSquareThree(){
		state = (int)(Math.random() * 4);
		switch(state)
		{
			case 0:
				grid[0].x = 4;
				grid[0].y = 0;
				grid[1].x = grid[0].x - 1;
				grid[1].y = grid[0].y + 1;
				grid[2].x = grid[0].x;
				grid[2].y = grid[0].y + 1;
				grid[3].x = grid[0].x + 1;
				grid[3].y = grid[0].y + 1;
				break;
				
			case 1:
				grid[0].x = 4;
				grid[0].y = 0;
				grid[1].x = grid[0].x;
				grid[1].y = grid[0].y + 1;
				grid[2].x = grid[0].x + 1;
				grid[2].y = grid[0].y + 1;
				grid[3].x = grid[0].x;
				grid[3].y = grid[0].y + 2;
				break;
				
			case 2:
				grid[0].x = 4;
				grid[0].y = 0;
				grid[1].x = grid[0].x + 1;
				grid[1].y = grid[0].y;
				grid[2].x = grid[0].x + 2;
				grid[2].y = grid[0].y;
				grid[3].x = grid[0].x + 1;
				grid[3].y = grid[0].y + 1;
				break;
				
			case 3:
				grid[0].x = 4;
				grid[0].y = 0;
				grid[1].x = grid[0].x - 1;
				grid[1].y = grid[0].y + 1;
				grid[2].x = grid[0].x;
				grid[2].y = grid[0].y + 1;
				grid[3].x = grid[0].x;
				grid[3].y = grid[0].y + 2;
				break;
				
			default:
				break;
		}
	}
	
	public void changeState(int flag[][])
	{
		switch(state)
		{
			case 0:
				tempX[0] = grid[0].x;
				tempY[0] = grid[0].y;
				tempX[1] = tempX[0];
				tempY[1] = tempY[0] + 1;
				tempX[2] = tempX[0] + 1;
				tempY[2] = tempY[0] + 1;
				tempX[3] = tempX[0];
				tempY[3] = tempY[0] + 2;
				isAllowChangeState(flag, 4);
				break;
				
			case 1:
				tempX[0] = grid[0].x - 1;
				tempY[0] = grid[0].y + 1;
				tempX[1] = tempX[0] + 1;
				tempY[1] = tempY[0];
				tempX[2] = tempX[0] + 2;
				tempY[2] = tempY[0];
				tempX[3] = tempX[0] + 1;
				tempY[3] = tempY[0] + 1;
				isAllowChangeState(flag, 4);
				break;
			case 2:
				tempX[0] = grid[0].x + 1;
				tempY[0] = grid[0].y - 1;
				tempX[1] = tempX[0] - 1;
				tempY[1] = tempY[0] + 1;
				tempX[2] = tempX[0];
				tempY[2] = tempY[0] + 1;
				tempX[3] = tempX[0];
				tempY[3] = tempY[0] + 2;
				isAllowChangeState(flag, 4);
				break;
				
			case 3:
				tempX[0] = grid[0].x;
				tempY[0] = grid[0].y;
				tempX[1] = tempX[0] - 1;
				tempY[1] = tempY[0] + 1;
				tempX[2] = tempX[0];
				tempY[2] = tempY[0] + 1;
				tempX[3] = tempX[0] + 1;
				tempY[3] = tempY[0] + 1;
				isAllowChangeState(flag, 4);
				break;
				
			default:
				break;
		}
	}
}


后续的博文将继续介绍俄罗斯方块游戏的功能与实现并给出代码。
  • 大小: 2.8 KB
  • 大小: 9.8 KB
  • 大小: 5.4 KB
  • 大小: 1.8 KB
  • 大小: 19.5 KB
  • 大小: 7.9 KB
  • 大小: 34.2 KB
  • 大小: 4.9 KB
0
0
分享到:
评论

相关推荐

    纯Java版本Swing俄罗斯方块MyTetris测试版1.0

    总的来说,“纯Java版本Swing俄罗斯方块MyTetris测试版1.0”是一个很好的学习案例,它将理论知识与实际应用相结合,帮助初学者掌握Java GUI编程,同时理解游戏开发的基本原理。通过这个项目,你可以深入学习Swing...

    Java版俄罗斯方块游戏源程序

    首先,Java是跨平台的面向对象编程语言,它的“一次编写,到处运行”特性使得该版本的俄罗斯方块游戏可以在任何支持Java虚拟机(JVM)的操作系统上运行。开发者使用Java的Swing或JavaFX库来创建图形用户界面(GUI)...

    java小游戏-俄罗斯方块

    一、Java基础与俄罗斯方块概述 在开始编写Java版的俄罗斯方块之前,我们需要对Java的基础知识有一定的了解,包括类、对象、方法、变量等概念。同时,理解俄罗斯方块的游戏规则也至关重要。游戏的核心是各种形状的...

    javase实训项目_俄罗斯方块

    JavaSE实训项目——“俄罗斯方块”是一款基于Java编程语言开发的经典小游戏,旨在帮助学习者掌握Java基础知识,尤其是图形用户界面(GUI)编程和事件处理。这个项目充分展示了Java的Swing库或JavaFX库在构建桌面应用...

    俄罗斯方块中图形的实现

    俄罗斯方块是一款经典的电子游戏,它的核心在于各种形状的方块(图形)在屏幕上的移动、旋转和堆叠。实现这个功能涉及多个关键知识点,包括图形绘制、事件处理、动画机制以及数据结构。 首先,我们需要理解游戏的...

    java俄罗斯方块源码

    Java语言实现的俄罗斯方块是一款经典的编程练习项目,它展示了游戏设计、图形用户界面(GUI)编程以及事件处理等核心编程概念。以下是基于这个“java俄罗斯方块源码”涉及的一些重要知识点: 1. **Java基础**:首先...

    俄罗斯方块游戏源码

    【俄罗斯方块游戏源码】是一款使用Java编程语言编写的经典小游戏,它的核心概念和实现原理是编程领域中的重要知识点。下面将详细讲解这个项目所涉及的编程技术、设计模式以及游戏逻辑。 首先,Java是一种广泛应用的...

    俄罗斯方块游戏,java源码下载!

    总之,这个Java实现的俄罗斯方块游戏是一个很好的实践项目,它结合了基本的编程概念、图形用户界面设计和游戏逻辑,对于学习Java和提升编程技能非常有益。如果你对游戏开发感兴趣,这是一个不错的起点。

    传智播客_俄罗斯方块游戏03_使用api类组装游戏.rar

    在本课程中,"传智播客_俄罗斯方块游戏03_使用API类组装游戏",我们将深入探讨如何利用编程API来构建经典的俄罗斯方块游戏。俄罗斯方块是一款具有悠久历史的电子游戏,它的核心玩法是控制各种形状的方块下落并组合...

    俄罗斯方块工程.zip

    总的来说,这个Java实现的俄罗斯方块游戏项目是一个很好的学习资源,涵盖了图形用户界面设计、事件处理、算法应用等多个编程核心概念,对提升Java编程和游戏开发能力大有裨益。通过阅读和理解源代码,开发者不仅可以...

    javaSwing编写的俄罗斯方块

    俄罗斯方块是一款流行的益智游戏,由不同形状的方块组成,玩家需要操控这些方块下落,并在到达底部或与其他方块接触时排列成完整的一行或多行以得分。这个游戏的核心机制包括方块生成、旋转、移动和消除行。 Swing ...

    一个比较不错的俄罗斯方块代码(有注释)

    在编程领域,俄罗斯方块是一款经典的电子游戏,其简单的规则和无穷无尽的挑战性使其成为学习编程和游戏开发的热门选择。这个压缩包中包含的"一个比较不错的俄罗斯方块代码(有注释)"是用Java语言实现的,这为我们提供...

    基于j2se的俄罗斯方块

    本教程将深入讲解如何利用Java的J2SE(Java Standard Edition)平台,结合Eclipse 3.5集成开发环境,来实现一个功能完备的俄罗斯方块游戏。 首先,让我们了解J2SE。J2SE是Java平台的核心部分,提供了编写桌面应用的...

    java实现的俄罗斯方块源代码

    俄罗斯方块是一款经典的电子游戏,自1984年诞生以来,就以其简洁的规则和无限的挑战性吸引了全球玩家。本篇文章将深入探讨如何使用Java编程语言实现这个经典游戏,并对源代码进行详细解析。 一、基础架构 在Java中...

    俄罗斯方块游戏源代码

    在俄罗斯方块游戏中,有两个主要的线程:一个是负责游戏逻辑的主线程,另一个是负责渲染图形的UI线程。主线程负责处理方块的下落、旋转、消除行等游戏逻辑,而UI线程则负责更新屏幕显示。这种分离设计避免了因为图形...

    java 俄罗斯方块

    总结,Java实现的俄罗斯方块游戏项目不仅能够帮助开发者巩固基础编程技能,还可以锻炼到面向对象设计、图形界面编程以及游戏逻辑设计等多个方面的能力。通过这个项目,开发者可以了解到如何将简单的概念转化为复杂...

    可改变颜色的贪吃蛇和俄罗斯方块

    标题中的“可改变颜色的贪吃蛇和俄罗斯方块”暗示了这是一个包含两种经典游戏的程序,它们都具有自定义颜色的功能。贪吃蛇和俄罗斯方块是电子游戏中最具代表性的作品,通常由编程爱好者用各种编程语言实现,这里提到...

    毕业论文俄罗斯方块游戏java

    【毕业论文俄罗斯方块游戏Java】是一篇关于利用Java编程语言设计并实现俄罗斯方块游戏的学术论文。这篇论文详细探讨了游戏设计的过程,并结合软件工程的方法论进行阐述。以下是该论文涉及的主要知识点: 1. **游戏...

    java俄罗斯方块代码

    Java语言实现的俄罗斯方块是一款经典的桌面游戏,它利用了编程的基本逻辑和数据结构来创建一个动态的游戏环境。下面将详细解析这个项目中的关键知识点。 首先,我们要理解俄罗斯方块的基本原理。游戏由不同形状的...

Global site tag (gtag.js) - Google Analytics