针对当前热议的俄罗斯方块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的相关内容介绍到此告一段落,若这些信息对您有所启发,欢迎持续关注本站获取更多优质内容。
评论列表(3条)
我是比克号的签约作者“比克号”
本文概览:针对当前热议的俄罗斯方块java话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二...
文章不错《俄罗斯方块java》内容很有帮助