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;
}
}
java 俄罗斯方块窗口_[代码全屏查看]-java 俄罗斯方块相关推荐
- java lock代码写法_[代码全屏查看]-java lock的使用
[1].[代码] [Java]代码 package boom; import java.util.concurrent.TimeUnit; import java.util.concurrent.lo ...
- java中两个数之差的绝对值_[代码全屏查看]-java 编程题(求两个数组中字符串长度之差绝对值最大)...
[1].[代码] [Java]代码 package codewars; import java.util.HashMap; import java.util.Map; /** * 问题描述 * * Y ...
- java简单雷电游戏代码_[代码全屏查看]-Java 雷电游戏(完成)
[3].[文件] MyFrame.java ~ 6KB 下载(399) package com.ruxia.frame; import java.awt.Frame; import java. ...
- java 面板 选择颜色_[代码全屏查看]-java颜色选择器
[1].[代码] [Java]代码 package com.liuxing.test; import java.awt.Color; import java.awt.event.ActionEvent ...
- java摩斯密码解密_[代码全屏查看]-摩斯密码转换-JAVA版
[1].[代码] [Java]代码 import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.St ...
- java方块排序_[代码全屏查看]-NxN方块排序,可自动运行
[1].[文件] MatrixGuide.java ~ 4KB 下载(18) package jiugong; import java.awt.*; import java.awt.event. ...
- java 代码 显示版本_[代码全屏查看]-Java版本小黄鸡
[1].[文件] LiaoTian.java ~ 3KB 下载(49) import java.io.BufferedReader; import java.io.InputStreamRead ...
- 申通快递java工资_[代码全屏查看]-java查询申通快递
[1].[代码] 用到了htmlunit的架包 package org.sjcx.tool; import com.gargoylesoftware.htmlunit.NicelyResynchron ...
- Java编写抓取用户信息代码_[代码全屏查看]-一个基于JAVA的知乎爬虫,抓取知乎用户基本信息...
[1].[代码] [Java]代码 作者:卧颜沉默 链接:https://www.zhihu.com/question/36909173/answer/97643000 来源:知乎 著作权归作者所有. ...
最新文章
- 程序员做到这20条,成为人生赢家!
- ubuntu 远程访问mysql_Ubuntu下远程访问MySQL数据库
- 步骤3 - Orchestra将请求转发给微服务提供者
- Ubuntu16.04编译RK3399:make kernel.img error
- matlab的7.3版本是什么_王者荣耀:玩不好元歌的3大原因,无论什么版本,元歌起码T1.5_电竞...
- JavaScript高级之ECMASript 7、8 、9 、10 新特性
- 计算机应用基础基础系统,计算机应用基础试题库系统分析
- MTK 驱动(4)---MTK Android Driver知识大全
- 深度学习自学(二十三):CAFFE-TF环境安装问题-兼容多个CUDA
- “System.FormatException”类型的未经处理的异常在 System.IdentityModel.dll 中发生 其他信息: 十六进制字符串格式无效。...
- 区块链软件公司:智媒链在数据分析和开发应用场景
- Android-Universal-Image-Loader-master(图片浏览+缓存)
- php 阻止ip代码,php – 如何阻止100,000个独立的IP地址
- SpringBoot多种自定义错误页面方式
- cwe_checker 二进制静态漏洞检测工具的安装与使用
- 分享《模拟专升本考试排名》
- 回首,缠绵的往事如一帘落花飞扬在寂寞阑珊
- rust 飞天指令_腐蚀RUST代码大全 腐蚀RUST指令代码一览
- 在Ubuntu 20.04系统里安装Flatpak软件应用无图标显示问题的解决
- Python视觉摄像头检测有趣项目之机器学习和概率论重点概念分析重要(三)(重点)
热门文章
- tcp 发送 最大数据量_网络基础知识夯实总结(三):TCP协议
- Java LocalDate类| 带示例的getEra()方法
- 调研了100+开源博客,发现这5个最好用!
- 一道题决定去留:为什么synchronized无法禁止指令重排,却能保证有序性?
- 服务器经常崩溃??让我们来看看简单的内存知识:C语言——内存管理
- 利用MFC按钮使能(或禁用)属性使按钮变正常色(或灰色)
- Vmware虚拟机的安装和使用
- org.springframework.data.redis.serializer.SerializationException: Cannot serialize;
- mysql 完全备份恢复吗_mysql完全备份与恢复
- mysql info commit_mysql show processlist 发现大量的commit