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

news2024/10/5 21:03:43

目录

 

技术实现:

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.coloradmin.cn/o/1828176.html

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

相关文章

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

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

Spring MVC详解(上)

一、Spring MVC初步认识 1.1介绍 Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能 Java Web开发者必须要掌握的技术框架 1.2MVC是什么 MVC是一种软件架构思想…

如何区分人工智能生成的图像与真实照片(下)

4 功能上的不合理性 AI 生成的图像往往会因为缺乏对现实世界物体结构和相互作用的了解,而产生各种功能不合理之处。这些不合理之处主要表现在以下几个方面: 4.1 构图不合理 物体关系不合逻辑: AI 生成的图像中,物体和人物之间的关系可能不符…

Sigir2024 ranking相关论文速读

简单浏览一下Sigir2024中与ranking相关的论文。不得不说,自从LLM大热后,传统的LTR方向的论文是越来越少了,目前不少都是RAG或类似场景下的工作了,比如查询改写、rerank等。 文章目录 The Surprising Effectiveness of Rankers Tr…

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

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

AtCoder Beginner Contest 358 A~E(F,G更新中...)

A.Welcome to AtCoder Land 题意 给出两个字符串 S , T S, T S,T&#xff0c;请你判断是否满足&#xff1a; 字符串 S S S为AtCoder 字符串 T T T为Land 分析 输入后判断即可 代码 #include<bits/stdc.h> using namespace std; void solve() {string s, t;cin &g…

HumanPlus——斯坦福ALOHA团队开源的人形机器人:先影子学习技术收集数据,后上模仿学习和RL

前言 今天只是一个平常的日子&#xff0c;不过看到了两篇文章 一篇是《半年冒出近百家新公司&#xff0c;「具身智能」也有春天》 我看完之后转发到朋友圈&#xff0c;并评论道&#xff1a;让机器人翻一万个后空翻&#xff0c;不如让机器人打好一个螺钉&#xff0c;毕竟在目前阶…

element--el-table添加合计后固定列x轴滚动条无法滚动问题

效果图 改变固定列滚轮高度问题 解决文章 解决方案 使用到的参数 pointer-events 属性用来控制一个元素能否响应鼠标操作&#xff0c;常用的关键字有 auto 和 none pointer-events: none; 让一个元素忽略鼠标操作 pointer-events: auto; 还原浏览器设定的默认行为 代码演示 添…

Mysql学习笔记-进阶篇

一、存储引擎 1、MYSQL体系结构 连接层、服务层、引擎层、存储层&#xff1b; 2、存储引擎简介 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是库的&#xff0c;所以存储引擎也可被称为表类型。 1&#xff09;在创…

天阳科技集团北京卡洛其项目管理专家李先林受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 天阳科技集团北京卡洛其项目管理专家李先林先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“应用软件项目管理标准化实践探讨”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1…

.net 调用海康SDK的常用操作封装

&#x1f4e2;欢迎点赞 &#xff1a;&#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff0c;赐人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原创&#x1f4e2;作者格言&#xff1a;新的征程&#xff0c;我们面对的不仅…

(南京观海微电子)——TFT激光修复技术

激光在显示面板修复方面的应用 液晶面板包括TFT玻璃、CF玻璃、面板以及后段模块组装等一系列工艺制作过程。每段过程中都会产生一定的缺陷&#xff0c;例如亮点、暗点、闪点、碎亮点等。这些缺陷会导致部分区域显示不良&#xff0c;但是我们可以通过暗点化、亮点化、ITO隔离、…

【Linux】pycharmgit相关操作

目录 1. git安装配置2. 相关内容3. pycharm连接远程仓库3.1 配置3.2 clone远程仓库3.3 本地仓库上传远程 4. 分支管理4.1 更新代码4.2 新建分支4.3 分支合并4.4 代码比对 5. 版本管理6. 命令行操作6.1 配置git6.2 基础操作6.3 分支操作 1. git安装配置 下载链接&#xff1a;官…

多模态大模型:基础架构

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

如何进行文件映射

创建一个文件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.…

Retrofit 注解参数详解

添加依赖 implementation com.squareup.retrofit2:retrofit:2.9.0 implementation com.squareup.retrofit2:converter-gson:2.9.0 初始化Retrofit val retrofit Retrofit.Builder().baseUrl("http://api.github.com/").addConverterFactory(GsonConverterFactory…

深度遍历-求矩阵最长递增路径

一、问题描述 二、解题思路 和深度遍历-求岛屿数量的思路一致&#xff0c;不过这里不需要设置判断是否产生访问过的boolean二维数组了&#xff0c;因为在这个题目里面是求递增序列&#xff0c;下一个元素只有比当前元素大才会往前走&#xff0c;即使在回头检查时&#xff0c;发…

大模型网信办备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…

Spring学习笔记(九)简单的SSM框架整合

实验目的 掌握SSM框架整合。 实验环境 硬件&#xff1a;PC机 操作系统&#xff1a;Windows 开发工具&#xff1a;idea 实验内容 整合SSM框架。 实验步骤 搭建SSM环境&#xff1a;构建web项目&#xff0c;导入需要的jar包&#xff0c;通过单元测试测试各层框架搭建的正确…

SpringBootWeb 篇-入门了解 Spring Cache 、Spring Task 与 WebSocket 框架

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Spring Cache 概述 1.1 Spring Cache 具体使用 1.1.1 引入依赖 1.1.2 Spring Cache 相关注解的介绍 2.0 Spring Task 概述 2.1 cron 表达式 2.2 Spring Task 使用…