java 俄罗斯方块窗口_[代码全屏查看]-java 俄罗斯方块

[1].[代码] [Java]代码

package com;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Random;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Eluos extends JFrame{

private Eluo_panel jPanel;

private int this_width=500,this_height=500;

public Eluos(){

this.setSize(this_width, this_height);

jPanel=new Eluo_panel();

this.add(jPanel);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

this.addKeyListener(new KeyListener() {

@Override

public void keyTyped(KeyEvent e) {

}

@Override

public void keyReleased(KeyEvent e) {

System.out.println("type");

switch (e.getKeyCode()) {

case KeyEvent.VK_LEFT:

Eluos.this.jPanel.moveOther(Eluo_panel.MOVE_RIGHT, Eluos.this.jPanel.curt_xingzhuang);

break;

case KeyEvent.VK_RIGHT:

Eluos.this.jPanel.moveOther(Eluo_panel.MOVE_LEFT, Eluos.this.jPanel.curt_xingzhuang);

break;

case KeyEvent.VK_UP:

System.out.println(Eluos.this.jPanel.curt_xingzhuang);

Eluos.this.jPanel.curt_xingzhuang=

Eluos.this.jPanel.bianXing(Eluos.this.jPanel.fangkuai.d, Eluos.this.jPanel.curt_xingzhuang);

break;

}

}

@Override

public void keyPressed(KeyEvent e) {

}

});

}

public static void main(String[] args) {

new Eluos();

}

}

class Eluo_panel extends JPanel implements Runnable{

Fangkuai fangkuai;

int huatu[][]=new int[20][20];

long now_time=0;

Random random=new Random();

Color color=new Color(0);

static final int MOVE_LEFT=1;

static final int MOVE_RIGHT=2;

boolean game_over=false;

int curt_xingzhuang[][];

public Eluo_panel(){

fangkuai=createNewFangkui();

Thread thread=new Thread(this);

thread.start();

}

@Override

public void paint(Graphics g) {

super.paint(g);

drawBack(g);

drawFangkui(g,curt_xingzhuang);

moveDown(curt_xingzhuang);

}

/**

* 画背景

* @param g

*/

void drawBack(Graphics g){

for (int i = 0; i < huatu.length; i++) {

for (int j = 0; j < huatu[i].length; j++) {

if(huatu[i][j]!=0)

g.fillRect(j*20, i*20, Fangkuai.width-1,Fangkuai.height-1);

}

}

}

/**

* 画一个方块

* @param g

* @param curt_xing

*/

void drawFangkui(Graphics g,int curt_xing[][]){

if(fangkuai==null)

{

fangkuai=createNewFangkui();

}

if(curt_xing!=null){

int y=0;boolean b=false;

for (int i = 0; i < curt_xing.length; i++) {

for (int j = 0; j < curt_xing[i].length; j++) {

if(curt_xing[i][j]!=0)

{

g.setColor(fangkuai.getColor());

g.fillRect((fangkuai.run_x+j)*Fangkuai.width, (fangkuai.run_y+y)*Fangkuai.height,

Fangkuai.width-1, Fangkuai.height-1);

b=true;

}

}

if(b)

y++;

}

}

}

/**

* 创建一个方块

* @return

*/

private Fangkuai createNewFangkui(){

int index=0;

Random random=new Random();

Fangkuai fangkuai=new Fangkuai();

Color color=new Color(random.nextInt(255),

random.nextInt(255),random.nextInt(255));

index=random.nextInt(4);

fangkuai.setColor(color);

curt_xingzhuang=Fangkuai.xingzhuangs[index];

return fangkuai;

}

/**

* 判断是否能够向下移动

* @param xingzhuang

* @return

*/

boolean isCan_down(int xingzhuang[][]){

int y=0;boolean b=false;

for (int i = 0; i < xingzhuang.length; i++) {

for (int j = 0; j < xingzhuang[i].length; j++) {

if(xingzhuang[i][j]!=0)

{

b=true;

if(fangkuai.run_y+y>=19||huatu[fangkuai.run_y+y+1][fangkuai.run_x+j]!=0){

return false;

}

}

}

if(b)

y++;

}

return true;

}

/**

* 变形

*/

public int[][] bianXing(int d,int arr[][]){

if(arr==null||arr[0]==null)

return null;

int arr2[][]=new int[arr.length][arr[0].length];

switch (d) {

case 1:

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr[i].length; j++) {

arr2[j][arr[i].length-1-i]=arr[i][j];

}

}

break;

default:

break;

}

for (int i = 0; i < arr2.length; i++) {

for (int j = 0; j < arr2[i].length; j++) {

if(arr2[i][j]!=0)

{

if(fangkuai.run_x+j>19||fangkuai.run_y+i>19||fangkuai.run_x+i<0

||huatu[fangkuai.run_y+i][fangkuai.run_x+j]!=0)

return arr;

}

}

}

return arr2;

}

/**

* 向下移动

* @param xingzhuang

*/

private void moveDown(int xingzhuang[][]){

if(isCan_down(xingzhuang))

fangkuai.run_y++;

else

{

/**

* 如果不能向下移动就把当前方块的0和1 映射到整个面板上,重新创建一个方块

*/

int y=0;boolean b=false;

for (int i = 0; i < xingzhuang.length; i++) {

for (int j = 0; j < xingzhuang[i].length; j++) {

if(xingzhuang[i][j]!=0)

{

huatu[fangkuai.run_y+y][fangkuai.run_x+j]=1;

b=true;

}

}

if(b)

y++;

}

xiaoChu();

for (int i = 0; i < huatu[0].length; i++) {

if(huatu[0][i]!=0)

game_over=true;

}

fangkuai=createNewFangkui();

}

}

public void xiaoChu(){

boolean xiao=false;

for (int i = huatu.length-1; i >=0; i--) {

xiao=false;

int j=0;

for ( j = 0; j < huatu[i].length; j++) {

if(huatu[i][j]==0)

break;

}

if(j==huatu[i].length)

xiao=true;

if(xiao){

for ( j = i; j >0; j--) {

for (int j2 = 0; j2 < huatu[j].length; j2++) {

huatu[j][j2]=huatu[j-1][j2];

}

}

for ( j = 0; j

huatu[0][j]=0;

}

}

}

}

/**

*

* @param d

* @param xingzhuang

*/

void moveOther(int d,int xingzhuang[][]){

int dx=d==MOVE_LEFT?1:-1;

if(is_CanMoveOther(d, xingzhuang)){

fangkuai.run_x+=dx;

}

}

private boolean is_CanMoveOther(int d,int xingzhuang[][]){

int dx=d==MOVE_LEFT?1:-1;

int y=0;boolean has=false;

for (int i = 0; i < xingzhuang.length; i++) {

has=false;

for (int j = 0; j < xingzhuang[i].length; j++) {

if(xingzhuang[i][j]!=0)

{

if(d==MOVE_LEFT&&fangkuai.run_x+j>=19||d==MOVE_RIGHT&&fangkuai.run_x+j<=0)

return false;

has=true;

if(huatu[fangkuai.run_y+y][fangkuai.run_x+j+dx]!=0){

return false;

}

}

}

if(has)

y++;

}

return true;

}

@Override

public void run() {

while(!game_over)

{

this.repaint();

try {

Thread.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

class Fangkuai {

private Color color;

int run_x=10,run_y;

int d=1;

static final int width=20,height=20;

public static final int xingzhuangs[][][]={

{{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},

{0,0,0,0,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}},

{{0,0,1,0},{0,1,1,1},{0,0,0,0},{0,0,0,0}},//土形

{{0,0,0,0},{1,0,0,0},{1,1,0,0},{0,1,0,0}},

{{1,1,1,1},{1,0,0,0},{0,0,0,0},{0,0,0,0}},//T形

{{1,1},{1,1}}

};

public Color getColor() {

return color;

}

public void setColor(Color color) {

this.color = color;

}

public int getRun_x() {

return run_x;

}

public void setRun_x(int run_x) {

this.run_x = run_x;

}

public int getRun_y() {

return run_y;

}

public void setRun_y(int run_y) {

this.run_y = run_y;

}

}

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

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

相关文章

vue3.0中使用Element-plus默认英文组件修改为中文

vue3.0中使用Element-plus默认英文组件修改为中文修改方法 说明&#xff1a;本方法Element-plus 1.0.2-beta.59 之前的版本可以&#xff0c;1.0.2-beta.59之后版本请看下一篇博客 1,引入element // ! element-plus vue3.0 import element from element-plus import element-…

在java中null的作用_在java中避免使用!= null有什么好处?

使用空集合或“空白”操作而不是null的主要优点是,大多数情况下,此类对象仍然可以在代码中工作而无需进一步修改.从本质上来说,空值更容易出错.请使用以下代码,例如&#xff1a;String[] names data.getNames();if (names ! null) {for (String name : names) {// Do stuff}}需…

新版Elemen Plus 国际化 1.0.2-beta.59(包含59)

根据官方文档可以找到解决办法。先来看一下官方文档内容 官方给出了两种方式。这里只研究第一种方式&#xff1a; <template><el-config-provider :locale"locale"><App /></el-config-provider> </template><script> import …

java开发亚马逊mws_GitHub - iotwlw/Amazon-MWS-SDK: 基于亚马逊MWS Java SDK 的封装

amazon-mws-java-sdk亚马逊MWS服务的Java-SDK封装安装在pom.xml中添加依赖top.guyi.amazonAmazon-MWS-SDK1.0.0.1依赖放在nexus私服中&#xff0c;并没有上传到中央仓库&#xff0c;所以请在pom.xml中加入仓库配置guyi-maple-nexushttp://nexus.guyi-maple.space/nexus/content…

oracle数据库中索引会失效的几种情况

创建Oracle 索引的目的是为了避免全表扫描数据&#xff0c;提高查询效率&#xff0c;但是如果sql语句写的不好致使索引失效&#xff0c;反而会影响数据查询效率。以下几种情况就会导致索引失效&#xff1a; 1. 没有 WHERE 子句 众所周知&#xff0c;添加索引的字段必需要在whe…

JAVA跑步计时器app_坚持跑步神器app

&#xfeff;坚持跑步神器app&#xff0c;让坚持不了自己跑步训练的人能够完成自己的训练目标&#xff0c;特色的惩罚系统时刻监督你跑步&#xff0c;不需要GPS就可以实现&#xff0c;非常方便&#xff0c;快来下载吧坚持跑步神器app介绍坚持跑步神器&#xff0c;设定每天跑步多…

java 中 BigDecimal 详解

首先&#xff0c;学习一个东西&#xff0c;我们都必须要带着问题去学&#xff0c;这边我分为 【为什么&#xff1f;】【是什么&#xff1f;】【怎么用&#xff1f;】 【为什么要用BigDecimal&#xff1f;】 首先&#xff0c;我们先看一下&#xff0c;下面这个现象 那为什么会…

三星s7不能运行java_在调试模式下启动时Android应用程序崩溃

当我在 debug 模式下运行时&#xff0c;应用程序崩溃了&#xff0c;但是当我正常运行它时它会起作用 . 我认为附加调试器时会出现问题 .日志&#xff1a;A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() ! GetDebugThread() (Thread::Current()0x…

关于vue-cli3中配置请求跨域的问题

关于vue-cli3中配置请求跨域的问题 根据Vue CLI3官方文档&#xff0c; 需要在vue.config.js文件中配置devServer.proxy选项来解决跨域问题。 1.关于vue.config.js文件 此文件在vue-cli3中不会自动生成&#xff0c;需要手动在项目根目录下创建。 2.配置devServer.proxy选项…

java单元测试内存数据库_基于内存数据库的单元测试

背景&#xff1a;当我们在进行单元测试时&#xff0c;对于关系型数据库(例如mysql)和非关系型数据库(例如redis)的处理&#xff0c;有的小伙伴通过mock的方式制作出假的数据进行测试&#xff0c;有的小伙伴会连到开发环境操作数据库。而连到开发环境&#xff0c;会受到很多限制…

String、StringBuilder、StringBuffer的区别

它们之间的区别&#xff1a; 在我们学习String类的时候&#xff0c;也会学习到StringBuilder和StringBuffer&#xff0c;但是他们之间有什么区别呢&#xff1f; 当然他们在具体的代码实现上、内存分配上以及效率上都有着不同&#xff08;我这里以JDK8为例&#xff09;&#xff…

2016年 java_2016年java考试试题及答案

2016年java考试试题及答案简答应用题1.下面程序运行后&#xff0c;可以使用上下左右键移动组件。 补充下画线部分的代码。import java.awt.*;import java.awt.event.*;public class E6 extends Frame implements keyListener{TextField b1;int x,y;E6(){setLayout (new FlowLay…

【Java深入理解】String str = “a“ + “b“ + “c“到底创建了几个对象?

String str “a” “b” “c"到底创建了几个对象&#xff1f;这是我们在讨论中最经常遇到的一个问题同时也是面试题。我们都知道在Java中从”.java"文件编译成".class"文件的过程&#xff0c;会有一个优化器去优化我们的代码。这个问题需要分成三种情况…

java quartz tomcat_Quartz Scheduler - 在Tomcat或应用程序jar中运行?

我们有一个Web应用程序&#xff0c;它通过在Jersey / Tomcat / Apache / PostgreSQL上运行的RESTful Web服务接收传入数据 . 与此Web服务应用程序分开&#xff0c;我们需要执行许多重复和计划任务 . 例如&#xff0c;以不同的时间间隔清除不同类型的数据&#xff0c;在不同的时…

php post json请求参数传递_php post json参数的传递和接收处理方法

页面1 &#xff0c;php传递json参数的页面&#xff1a;1.phpfunction http_post_data($url, $data_string) {$ch curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, …

Linux中如何查看某个端口是否被占用

Linux中如何查看某个端口是否被占用 1.netstat -anp |grep 端口号 如下&#xff0c;我以3306为例&#xff0c;netstat -anp |grep 3306&#xff08;此处备注下&#xff0c;我是以普通用户操作&#xff0c;故加上了sudo&#xff0c;如果是以root用户操作&#xff0c;不用加sudo…

java 压缩jar 仓库,java服务安装(一):使用java service wrapper及maven打zip包

tags&#xff1a; java jsw maven zip1、概述使用java开发程序&#xff0c;在windows平台下&#xff0c;一般有web应用&#xff0c;后台服务应用&#xff0c;桌面应用&#xff1a;web应用多数打成war包在web容器(如tomcat,jetty等)中运行桌面应用一般打成jar包或exe文件运行后台…

如何处理代码冲突

如何处理代码冲突 冲突合并一般是因为自己的本地做的提交和服务器上的提交有差异&#xff0c;并且这些差异中的文件改动&#xff0c;Git不能自动合并&#xff0c;那么就需要用户手动进行合并 如我这边执行git pull origin master 如果Git能够自动合并&#xff0c;那么过程看…

php试题与答案(二),php面试题附答案二

1、如何实现字符串翻转&#xff1f;function getStr($str){$lenstrlen($str);for ($i0;$i$temp$str[$i];$str[$i]$str[$len-$i-1];$str[$len-$i-1]$temp;}return $str;}echo getStr("abcdef");?>2、apachemysqlphp实现最大负载的方法&#xff1f;个人观点&#x…

如何理解NIO

文章目录1.什么是NIO&#xff1f;2.为什么用NIO&#xff0c;传统IO有什么缺陷&#xff1f;3.NIO和IO的区别4.怎么理解NIO是面向块的、非阻塞的5.NIO是怎么实现的&#xff1f;1.什么是NIO&#xff1f; java.nio全称java non-blocking IO&#xff08;实际上是 new io&#xff09…