万事开头难——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();}
}

 窗口居中显示:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于android开发平台的聊天软件实现(论文+源码)_kaic

摘要:互联网时代的到来使得手机通讯变得更为普及和强大,人们可以随时随地地进行交流。由于工作的繁忙以及生活节奏的加快,人们无法有更多时间展开面对面的交谈,导致在线聊天软件的使用更加频繁,所以本文尝试设计了一款…

Node入门以及express创建项目

前言 记录学习NodeJS 一、NodeJS是什么? Node.js 是一个开源和跨平台的 JavaScript 运行时环境 二、下载NodeJs 1.下载地址(一直点击next即可,记得修改安装地址) https://nodejs.p2hp.com/download/ 2.查看是否安装成功,打开命令行 nod…

css入门宝典

3.1.4 通配符选择器 语法 : *{} 作用 : 让页面中所有的标签执行该样式,通常用来清除间距 例子 : *{ margin: 0; //外间距 padding: 0; //内间距 } 一 CSS基本语法 1基础知识 1.1概述 Css (层叠样式表)是种格式化网页的标准方式, 用于控制设置网页的样式&#xff…

windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud

windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud 1、docker安装 太简单了,直接去搜一搜。 docker-compose 相关命令 docker-compose down docker compose up -d2、还是使用老的 在你需要挂载的目录下,新建一个文件,…

POC EXP | woodpecker插件编写

woodpecker插件编写 目录 woodpecker介绍woodpecker使用插件编写 安装环境 woodpecker-sdkwoodpecker-request 创建Maven项目 Confluence OGNL表达式注入漏洞插件编写 创建Package包和Class类编写POC 漏洞POC代码编写导出jar包将jar包放入woodpecker的plugin目录运行woodpeck…

springCloudAlibaba之分布式网关组件---gateway

gateway-网关 网关spring cloud gateway 网关 在微服务架构中一个系统会被拆分成多个微服务。那么作为客户端(前端)要如何去调用这么多的微服务?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。 这样的架构&#x…

【文档智能】实践:基于Yolo三行代码极简的训练一个版式分析模型

一、数据集 本文以开源的CDLA数据集做为实验,CDLA是一个中文文档版面分析数据集,面向中文文献类(论文)场景。包含以下10个label: 数据集下载地址:https://github.com/buptlihang/CDLA 数据集是labelme格式…

「茶桁 AI 秘籍-CV 篇」预告

Hi, 大家好。 我是茶桁。 咱们的《茶桁的 AI 秘籍》系列距离上一个系列课程《人工智能 BI 核心》已经有一段时间了,终于有时间可以写 CV 部分的课程,主要也是最近一段时间我确实有点忙不过来。 那么咱们 CV 的课程会有一些变化,就是会改为收…

搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“

搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下,是因为复制过来的命令前面包含了空格,将复制的命令放到idea可以清楚看到几个命令前面有空格,删除掉就好了,记录一下

Github入门教程,适合新手学习(非常详细)

前言:本篇博客为手把手教学的 Github 代码管理教程,属于新手入门级别的难度。教程简单易操作,能够基本满足读者朋友日常项目寄托于 Github 平台上进行代码管理的需求。Git 与 Github 是一名合格程序员 coder 必定会接触到的工具与平台&#x…

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示(1)有加载动画,执行promise函数(2)无加载动画,执行click事件 总结 前言 今天这篇主要讲全局按钮组件封装,可根据UI设…

2023年13个最适合销售电子书的WordPress主题

欢迎来到我们用于销售电子书和其他数字/可下载产品(软件、应用程序、图标集、主题等)的最佳WordPress主题的完整集合。 这些主题有内置的支付网关,可以通过 PayPal、信用卡等处理安全支付。(易于配置!) 最…

如何进行文件映射

创建一个文件WebMvcConfig package com.itheima.config;import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.…

红队攻防渗透技术实战流程:中间件安全:JettyJenkinsWeblogicWPS

红队攻防渗透实战 1. 中间件安全1.1 中间件-Jetty-CVE&信息泄漏1.2 中间件-Jenkins-CVE&RCE执行1.2.1 cve_2017_1000353 JDK-1.8.0_291 其他版本失效1.2.2 CVE-2018-10008611.2.3 cve_2019_100300 需要用户帐号密码1.3 中间件-Weblogic-CVE&反序列化&RCE1.4 应…

zip加密txt文件后,暴力破解时会有多个解密密码可以打开的疑问??

最近在做一个关于zip压缩文件解密的测试,发现通过暴力解密时,会有多个解密密码可以打开,非常疑惑,这里做个问题,希望能有大佬解惑。 1、首先在本地创建一个113449.txt的文件,然后右键txt文件选择压缩&…

RoCE网络架构在高性能计算的应用

浅析RoCE在高性能计算的应用 在高性能计算(HPC)系统的发展初期,通常选择专业网络解决方案,如Myrinet、Quadrics和InfiniBand,而不是以太网解决方案。通过定制网络方案可以有效解决以太网解决方案的限制,增强带宽、降低延迟、改善拥塞控制。 2010年,IBTA推出了RoCE协议技…

PyQT5 键盘模拟/鼠标连点器的实现

近来在玩一个游戏,找不到合适的鼠标连点器,不是有广告就是功能太复杂,自己写了一个,分享出来,如果有需要的可以自行运行研究。 准备工作 Python版本:Python 3.12.3;运行前确保pyQT5已经安装: pip install PyQt5程序运行界面: 程序代码: 通过引入单独的常量和变…

智能计算系统-概述

1、人工智能技术分层 2、人工智能方向人才培养 3、课程体系的建议 4、智能系统课程对学生的价值 5、智能计算系统对老师的价值 6、什么是智能计算系统 7、智能计算系统的形态 8、智能计算系统具有重大价值 9、智能计算系统的三大困难 10、开创深度学习处理器方向 11、寒武纪的国…

用一个ESP32S3-Zero把有线键盘变为无线

三脚猫最近一直琢磨,那些喜欢买剪线键盘,以及自制键盘瞎折腾的人都是怎么搞的。经过不懈努力,终于想明白除了直接的硬件一个个pin针的高低电压判断后转给蓝牙,拿到现成的古董剪线键盘还有一个方式其实是在usb host转发给蓝牙类似这…

北斗三代一体式数传终端短报文

北斗三代一体式数传终端短报文M20C-V30针对船载通信和导航应用推出的一款支持北斗 RDSS/RNSS 功能的船载一体机。北斗数传终端内部集成了北斗多频天线、射频、基带以及主控等功能单元,可实现 RDSS 定位、短报文通信和 RNSS 导航定位等功能。M20C-V30型北斗数传终端体…