俄罗斯方块java

针对当前热议的俄罗斯方块java话题,我们进行了深入调研和信息整合 ,力求为您呈现全面客观的内容分析。

可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵 ,转变为二元数组旋转 。观察一下左旋:

11 12 13 31 21 11

21 22 23 →→ ? 32? 22? 12

31 32 33 33? 23? 13

坐标变换如下:(1,1)变为(1,3),(1,2)变为(2,3),(1,3)变为(3,3)

(2,1)变为(1,2) ,(2,2)变为(2,2),(2,3)变为(3,2)

(3,1)变为(1,1),(3,2)变为(2,1) ,(3,3)变为(3,1)

规律就是(i,j)变为(j,3-i+1):

如果是2*2的方格 ,就可以变为二阶行列式,也就是2*2的二元数组,这里给出3*3九宫格改变的示意 ,我的代码如下:

import?java.util.Random;

public?class?T{

public?static?void?main(String[]?args){

int[][]?a=new?int[3][3];

System.out.println("now?begin?to?form?a?new?integer?array");

Random?r=new?Random();

for(int?i=0;i<3;i++){

for(int?j=0;j<3;j++){

a[i][j]=r.nextInt(10);

}

}

System.out.println("the?array?is?shown?as?follows:");

for(int?i=0;i<3;i++){

for(int?j=0;j<3;j++){

System.out.print(a[i][j]+"?");

}

System.out.println();

}

System.out.println("左转九十度");

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

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

System.out.print(a[a[i].length-1-j][i]+"?");

}

System.out.println();

}

}

}

这样:

import java.awt.*;?

import java.awt.event.*;?

import javax.swing.*;

import java.awt.Graphics;

public class MainClass extends JFrame {?

public JComboBox box;?

int flag = 0;?

jpNewPanel jpNewPanel;

public static void main(String[] args) {?

MainClass frame = new MainClass();?

frame.setBounds(650,300,550,550);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setTitle("信号灯");?

frame.setVisible(true);?

}

public MainClass() {?

box = new JComboBox();?

box.addItem("请选择");?

box.addItem("红灯");?

box.addActionListener(new ActionListener() {?

public void actionPerformed(ActionEvent e) {?

flag = box.getSelectedIndex();?

jpNewPanel.repaint();?

}?

});?

box.addItem("黄灯");?

box.addActionListener(new ActionListener() {?

public void actionPerformed(ActionEvent e) {?

flag = box.getSelectedIndex();

jpNewPanel.repaint();?

}?

});?

box.addItem("绿灯");?

box.addActionListener(new ActionListener() {?

public void actionPerformed(ActionEvent e) {?

flag = box.getSelectedIndex();?

jpNewPanel.repaint();?

}?

});?

add(box, BorderLayout.NORTH);?

jpNewPanel = new jpNewPanel();?

add(jpNewPanel, BorderLayout.CENTER);?

}?

class jpNewPanel extends JPanel {?

protected void paintComponent(Graphics g) {?

super.paintComponent(g);?

g.drawOval(150, 0, 120, 120);?

if (flag == 1) {?

g.setColor(Color.RED);?

g.fillOval(150, 0, 120, 120);?

} else if (flag == 2) {?

g.setColor(Color.YELLOW);?

g.fillOval(150, 0, 120, 120);?

} else if (flag == 3) {?

g.setColor(Color.GREEN);?

g.fillOval(150, 0, 120, 120);?

}?

}?

}?

}?

扩展资料:

注意事项

每个Road对象都有一个name成员变量来代表方向,有一个vehicles成员变量来代表方向上的车辆集合。

在Road对象的构造方法中启动一个线程每隔一个随机的时间向vehicles集合中增加一辆车(用一个“路线名_id”形式的字符串进行表示)。

在Road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿 ,是则打印车辆集合和将集合中的第一辆车移除掉 。

关于俄罗斯方块java的相关内容介绍到此告一段落,若这些信息对您有所启发,欢迎持续关注本站获取更多优质内容。

(7)

猜你喜欢

发表回复

本站作者才能评论

评论列表(3条)

  • 比克号的头像
    比克号 2026年08月20日

    我是比克号的签约作者“比克号”

  • 比克号
    比克号 2026年08月20日

    本文概览:针对当前热议的俄罗斯方块java话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二...

  • 比克号
    用户082011 2026年08月20日

    文章不错《俄罗斯方块java》内容很有帮助

联系我们:

邮件:比克号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信