万事开头难——Java实现俄罗斯小方块【第一步】

目录

 

技术实现:

1.初始化游戏窗口;

1.1 什么是窗口:

1.2 Swing

1.3 JFrame创建窗口:

1.3.1创建窗口的逻辑 

1.3.2.设置简单的页面

 1.3.3.优化

1.3.4.设置标题

1.4 创建游戏窗口

技术实现:


1.初始化游戏窗口;

2.初始化游戏界面;

3.初始化游戏的说明面板;

4.随机生成下落方块;

5.绘制方块;

6.清除方块;

7.清楚某一行方块,上方方块掉落;

8.刷新清除某一行方块后的界面;

9.键盘控制下落方块的移动方向,形状;

10.判断方块能否下落;

11.实现方块下落速度的变化;

12.游戏的暂停;

1.初始化游戏窗口;

1.1 什么是窗口:

        简而言之就是应用的界面,可以通过“最小化” “最大化”来改变窗口大小,在游戏界面一般不允许改变其大小;

1.2 Swing

        这涉及到Swing的初级应用。 

        Swing是一个为Java设计GUI(图形化用户界面)的工具包,位于Javax.swing包中,为程序员使用。组件采用MVC设计,

        此外,Swing是轻量级的界面库,JavaFX是在JDK1.8使用的新的的界面库,SWT是exlipse使用的界面库,Android适用于手机,平板的界面,Harmony华为鸿蒙使用的ui;

        Swing是一种比较老旧的技术,而且目前主流开发也不是界面设计,我们学习Swing的目的是掌握程序设计的过程和逻辑,而不仅仅是学习Swing

下面,我们来学习JFrame。

 

1.3 JFrame创建窗口:

  Java提供的JFrame类的实质是一个底层容器,也就是窗口,其他组件必须添加到底层容器中,配合操作系统进行信息的交互;

  我们可以使用JFrame类或其子类来创建一个窗口;

1.3.1创建窗口的逻辑 

1.创建窗口;

2.设置窗口大小位置等;

3.设置窗口的关闭方式‘

1.3.2.设置简单的页面

下面的代码设置了界面的大小、位置以及界面是可见的;

//界面设置学习
class JFrameDemo{
    public static void main(String[] args) {
        //创建对象
        JFrame jframe=new JFrame();
        //设置界面大小
        jframe.setSize(900,600);
        //设置界面位置
        jframe.setLocation(0,0);//左上角为0,0
        //可见不可见
        jframe.setVisible(true);
    }
}

 1.3.3.优化

使用set.Bounds方法设置界面的大小和位置;

class JFrameDemo{
    public static void main(String[] args) {
        //创建对象
        JFrame jframe=new JFrame();
        //将设置界面大小与位置合为一处
        jframe.setBounds(0,0,400,600);
        //可见不可见
        jframe.setVisible(true);
        //设置窗口的关闭方式
        //jframe.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//点击不可关闭
        jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//点击关闭,推荐使用
    }
}
1.3.4.设置标题

setTitle方法可以设置其标题,但我们通常在在创建对象的同时输入标题。

class JFrameDemo{
    public static void main(String[] args) {
        //创建对象
        JFrame jframe=new JFrame();
        //将设置界面大小与位置合为一处
        jframe.setBounds(0,0,400,600);
        //设置标题
        jframe.setTitle("真好玩!");
        //可见不可见
        jframe.setVisible(true);
        //设置窗口的关闭方式
        //jframe.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//点击不可关闭
        jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//点击关闭,推荐使用
    }
}
class JFrameDemo{
    public static void main(String[] args) {
        //创建对象
        JFrame jframe=new JFrame("真好玩!");
        //将设置界面大小与位置合为一处
        jframe.setBounds(0,0,400,600);
        //可见不可见
        jframe.setVisible(true);
        //设置窗口的关闭方式
        //jframe.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//点击不可关闭
        jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//点击关闭,推荐使用
    }
}

     1.4 创建游戏窗口

        了解完上面的知识,我们再看看下面的代码。

        下面的程序是执行初始化游戏窗口的,我们通过this.使用本类JFrame的方法创建窗口;

package ComputerGame;
import javax.swing.*;
//这是窗口类
public class Window extends JFrame {
    //成员方法——初始化游戏窗口
    public void initWindow(){
        //设置窗口大小
        this.setSize(600,800);
        //也可以设置初始位置和窗口大小
        //this.setBounds(0,0,600,800);
        //设置窗口是否可见
        this.setVisible(true);
        //设置窗口居中
        this.setLocationRelativeTo(null);
        //设置释放窗体
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//EXIT:出口,通道
        //设置窗口大小不可变
        this.setResizable(false);
        //设置标题
        this.setTitle("俄罗斯方块");

    }
    public Window(){
        initWindow();
    }
    public static void main(String[] args) {
        Window w=new Window();
    }
}

 窗口居中显示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/713979.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CT】LeetCode手撕—20. 有效的括号

题目 原题连接&#xff1a;20. 有效的括号 1- 思路 模式识别 模式1&#xff1a;括号左右匹配 ——> 借助栈来实现 ——> Deque<Character> deque new LinkedList<>()模式2&#xff1a;顺序匹配 ——> 用 if 判断 具体思路 1.遇到左括号 直接入栈相应…

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中&#xff0c;有效的电池管…

【AI基础】第六步:纯天然保姆喂饭级-安装并运行qwen2-7b

整体步骤类似于 【AI基础】第五步&#xff1a;纯天然保姆喂饭级-安装并运行chatglm3-6b-CSDN博客。 此系列文章列表&#xff1a; 【AI基础】概览 【AI基础】第一步&#xff1a;安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步&#xff1a;安装python开发环…

面试题 17.05. 字母与数字

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;把字母看成1&#xff0c;把数字看为-1&#xff0c;将题目变为求的和为0的最长连续子数组 class Solution { public:vector<string> findLongestSubarray(vector<string>& array) …

MySQL查询练习题1.平均工资2.查询各部门的总薪水3.查询总薪水排名第二的部门4.查询姓名重复的员工信息5.查询各部门薪水大于900的男性员工的平均薪水

创建一个员工表emp&#xff0c;包含字段&#xff1a;姓名name&#xff0c;性别sex&#xff0c;部门depart&#xff0c;工资salary create table emp(name varchar(30) not null,sex varchar(30) not null,depart int not null,salary int not null); 插入数据打印为 mysql>…

Windows Server 2008 r2 IIS .NET

Windows Server 2008 r2 IIS .NET

2-2 基于matlab的变邻域

基于matlab的变邻域&#xff0c;含变惯性权重策略的自适应离散粒子群算法&#xff0c;适应函数是多式联运路径优化距离。有10城市、30城市、75城市三个案例。可直接运行。 2-2 路径规划 自适应离散粒子群算法 - 小红书 (xiaohongshu.com)

MySQL基础——多表查询和事务

目录 1多表关系 2多表查询概述 3连接查询 3.1内连接 3.2左外连接 3.3右外连接 3.4自连接 4联合查询 5子查询 5.1标量子查询(子查询结果为单个值) 5.2列子查询(子查询结果为一列) 5.3行子查询(子查询结果为一行) 5.4表子查询(子查询结果为多行多列) 6事务简介和操…

模拟电子技术基础(二)--PN结

PN结的本质 芯片都是由硅晶体制成&#xff0c;单个硅原子最外层有带有4个电子 在纯硅当中这些电子会两两形成共价键&#xff0c;此时周围形成非常稳定的八电子结构 在一个回路中&#xff0c;灯泡不亮&#xff0c;不导通&#xff0c;因为电池无法吸引其中的电子离开&#xff0c…

机器学习在医学领域中的应用|文献精析·24-06-13

小罗碎碎念 2024-06-13&#xff5c;文献精析&#xff1a;机器学习在医学领域中的应用 为了系统性地和大家梳理一下机器学习在医学领域中的应用&#xff0c;我特意去找了一篇文献&#xff0c;把其中有价值的信息筛选出来了。但是我没选的内容不代表不重要&#xff0c;感兴趣的可…

高分论文密码---大尺度空间模拟预测与数字制图

大尺度空间模拟预测和数字制图技术和不确定性分析广泛应用于高分SCI论文之中&#xff0c;号称高分论文密码。大尺度模拟技术可以从不同时空尺度阐明农业生态环境领域的内在机理和时空变化规律&#xff0c;又可以为复杂的机理过程模型大尺度模拟提供技术基础。我们将结合一些经典…

Java SE进阶必备:数组中的命令行参数详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

5000天后的世界

为何可以预见未来 1993年&#xff0c;在互联网的黎明时代&#xff0c;凯文凯利创办了《连线》杂志。他曾经采访过以比尔盖茨、史蒂夫乔布斯、杰夫贝佐斯为代表的一众风云创业家。《连线》杂志是全球发行的世界著名杂志&#xff0c;一直致力于报道科学技术带来的经济、社会变革…

Linux screen命令使用

文章目录 1. 前言2. screen是什么?3. screen使用场景描述3. screen常用命令4. 小结5. 参考 1. 前言 实际开发中用到的云服务器&#xff0c;如果项目使用的是python&#xff0c;需要利用项目运行一些时间较长的项目程序脚本的话&#xff0c;由于我们通过ssh连接远端服务器&…

【深度学习】TCN,An Empirical Evaluation of Generic Convolutional【二】

文章目录 膨胀卷积什么是膨胀卷积膨胀卷积公式PyTorch代码 从零开始手动实现一个1D膨胀卷积&#xff0c;不使用PyTorch的nn.Conv1d1. 基本概念2. 手动实现1D膨胀卷积 TCN结构如何使用TCN源码说明1. Chomp1d 类2. TemporalBlock 类3. TemporalConvNet 类 使用方法 膨胀卷积 什么…

计算机毕业设计hadoop+spark+hive知识图谱股票推荐系统 股票数据分析可视化大屏 股票基金爬虫 股票基金大数据 机器学习 大数据毕业设计

哈 尔 滨 理 工 大 学 毕业设计开题报告 题 目&#xff1a; 基于Spark的股票大数据分析及可视化系统 院 系&#xff1a; 计算机科学与技术学院 数据科学与大数据技术系 2023年10月 一、选题的依据…

String常用方法详解

auth&#xff1a;别晃我的可乐 date&#xff1a;2024年06月16日 比较大小 equals(Object obj): 用于比较字符串内容是否相等。compareTo(String anotherString): 按字典顺序比较两个字符串。 String str1 "hello"; String str2 "world";boolean isEqual …

Android面试题 之 网络通信基础 面试题

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 序列化 判断标准 序列化后的码流大小性能跨语言 Serializable方式 码流偏大性能较低 XML方式 人机可读性好文件格式复杂、占带宽 JSON …

version-manager最好用的SDK版本管理器,v0.6.2发布

项目地址&#xff1a;https://github.com/gvcgo/version-manager 中文文档&#xff1a;https://gvcgo.github.io/vdocs/#/zh-cn/introduction 功能特点&#xff1a; 跨平台&#xff0c;支持Windows&#xff0c;Linux&#xff0c;MacOS支持多种语言和工具&#xff0c;省心受到…

Spark运行spark-shell与hive运行时均报错的一种解决方案

环境按照尚硅谷的配置的。 在运行hive的时候&#xff0c;报错代码为30041&#xff0c;无法执行insert语句。 在运行spark-shell的时候&#xff0c;报错&#xff0c;无法进入到shell脚本中。 可能的问题&#xff1a; 对集群设置的域名与集群的主机名称不一致。 例如&#xff1a;…