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();
}
}
}
}
是不是线程什么的冲突了啊?我不知弄线程,帮忙弄下
java程序,下落()的方法为什么不能实现?帮忙改正一下。谢谢
答案:2 悬赏:30 手机版
解决时间 2021-03-03 04:15
- 提问者网友:爱了却不能说
- 2021-03-02 22:11
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 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;
是执行不了的.
你可以修改一下下落(),虽然不知道你想实现什么功能.
下落(){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();
}
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯