永发信息网

java程序,下落()的方法为什么不能实现?帮忙改正一下。谢谢

答案:2  悬赏:30  手机版
解决时间 2021-03-03 04:15
  • 提问者网友:爱了却不能说
  • 2021-03-02 22:11
import java.awt.*;
import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Tetris extends JFrame{

public static void main(String[] args) {
Tetris frame = new Tetris();
JMenuBar menu = new JMenuBar();
frame.setJMenuBar(menu);
JMenu game = new JMenu("游戏");
JMenuItem newgame = game.add("新游戏");
//JMenuItem pause = game.add("暂停");
JMenuItem goon = game.add("继续");
JMenuItem exit = game.add("退出");
JMenu help = new JMenu("帮助");
JMenuItem about = help.add("关于");
menu.add(game);
menu.add(help);

//frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setTitle("Tetris内测版");
// frame.setUndecorated(true);
frame.setVisible(true);
frame.setResizable(true);//即可以用鼠标拖大,小窗口
}

public Tetris(){
add(new a());

}

static class a extends JPanel {

int[][] luos=new int[20][10];

public a() {
Timer timer = new Timer(100, new TimerListener());
timer.start();
下落();
}

void 下落() {
for(int h=18;h>=0;h--) {
for(int l=0;l<10;l++) {
if(luos[h][l]==1) {
luos[h][l]=0;
luos[h+1][l]=1;
}
}
}
}

public void paintComponent(Graphics g) {
super.paintComponent(g);

造落块();
显示落块(g);

//画框框
g.setColor(Color.gray);
g.drawRect(20,30,300,400);

//画分数格子
g.setColor(Color.gray);
g.drawRect(325,30,60,400);

}

void 造落块() {
luos[8][4]=1;luos[8][5]=1;
luos[9][4]=1;luos[9][5]=1;
}

void 显示落块(Graphics g) {
for(int h=0;h<20;h++) {
for(int l=0;l<10;l++) {
if(luos[h][l]==1)
{ g.setColor(Color.red);
g.drawRect(h*20,l*20,20,20);}
}
}
}

class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
repaint();
}
}

}

}
是不是线程什么的冲突了啊?我不知弄线程,帮忙弄下
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-03-02 23:38
你好,下落()的确运行了(不信,可以加个输出语句试试,
下落(){System.out.print("!!!!!!");。。。})
,但是运行没结果,因为if里面的条件满足不了啊,在你新建int[][] luos=new int[20][10];
时,它的默认值都是0,当你运行下落()的时候,当然没有luos[h][l]==1的格子,所以
luos[h][l]=0;
luos[h+1][l]=1;
是执行不了的.
你可以修改一下下落(),虽然不知道你想实现什么功能.
全部回答
  • 1楼网友:千夜
  • 2021-03-03 01:02
Java不支持有标识符、类、接口、枚举、方法、变量名称中使用中文,修改为: import javax.swing.*; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class Tetris extends JFrame{ public static void main(String[] args) { Tetris frame = new Tetris(); JMenuBar menu = new JMenuBar(); frame.setJMenuBar(menu); JMenu game = new JMenu("游戏"); JMenuItem newgame = game.add("新游戏"); JMenuItem goon = game.add("继续"); JMenuItem exit = game.add("退出"); JMenu help = new JMenu("帮助"); JMenuItem about = help.add("关于"); menu.add(game); menu.add(help); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 500); frame.setTitle("Tetris内测版"); frame.setVisible(true); frame.setResizable(true);//即可以用鼠标拖大,小窗口 } public Tetris(){ add(new a()); } static class a extends JPanel { int[][] luos=new int[20][10]; public a() { Timer timer = new Timer(100, new TimerListener()); timer.start(); myDown(); } void myDown() { for(int h=18;h>=0;h--) { for(int l=0;l<10;l++) { if(luos[h][l]==1) { luos[h][l]=0; luos[h+1][l]=1; } } } } public void paintComponent(Graphics g) { super.paintComponent(g); createDown(); listDown(g); //画框框 g.setColor(Color.gray); g.drawRect(20,30,300,400); //画分数格子 g.setColor(Color.gray); g.drawRect(325,30,60,400); } void createDown() { luos[8][4]=1;luos[8][5]=1; luos[9][4]=1;luos[9][5]=1; } void listDown(Graphics g) { for(int h=0;h<20;h++) { for(int l=0;l<10;l++) { if(luos[h][l]==1) { g.setColor(Color.red); g.drawRect(h*20,l*20,20,20);} } } } class TimerListener implements ActionListener { public void actionPerformed(ActionEvent e) { repaint(); } } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯