【基于Swing,linux服务器开发面试题

}

}

difficultChoice.add(“简单”);

difficultChoice.add(“中等”);

difficultChoice.add(“困难”);

difficultChoice.add(“变态”);

newgameButton.setBounds(map[0].length * 40 + 80, 40, 100, 20);

newgameButton.setBackground(Color.white);

newgameButton.setBorderPainted(false); //去边框

reLoad.setBounds(map[0].length * 40 + 100, 80, 60, 20);

reLoad.setBackground(Color.white);

reLoad.setBorderPainted(false);

difficultChoice.setBounds(map[0].length * 40 + 100, 120, 60, 20);

difficultChoice.addItemListener(this);

newgameButton.addActionListener(this);

reLoad.addActionListener(this);

this.add(newgameButton);

this.add(reLoad);

this.add(difficultChoice);

// /-------------------------漏斗

ld.setBounds(map[0].length * 40 + 100, 200, 70, 150);// 漏斗

ld.setBackground(Color.black);

this.add(ld);

}

class loudou extends JPanel implements Runnable {

private static final long serialVersionUID = 1L;

private int dijiguan;

int remainTimes = 0; // 时间

int x1 = 0;

int y1 = 30;

int x2 = 60;

int y2 = 150;

Thread nThread1;//线程

JLabel overJLabel = new JLabel();

JDialog dialog = new JDialog();

public loudou() {

nThread1 = new Thread(this);

nThread1.start();

this.setLayout(null);

this.add(overJLabel);

overJLabel.setBounds(0, 0, 200, 50);

overJLabel.setForeground(Color.white);

}

public void setdijiguan(int x) {

this.dijiguan = x;

}

public void paintComponent(Graphics g) // 画画函数

{

super.paintComponent(g);

g.setColor(Color.green);

for (int i = 0; i < 56; i++) {

g.drawLine(x1 + i / 2 + 2, y1 + i, x2 - i / 2 - 2, y1 + i);

}

if (remainTimes < 55) {

for (int i = 0; i < remainTimes; i++) {

g.drawLine(x1 + i / 2 + 2, y2 - i - 1, x2 - i / 2 - 2, y2 - i

  • 1);

}

g.drawLine((x1 + x2) / 2, (y1 + y2) / 2, (x1 + x2) / 2, y2 - 2);

g.drawLine((x1 + x2) / 2 + 1, (y1 + y2) / 2 + 1, (x1 + x2) / 2 + 1,y2 - 2);//两条竖线

g.setColor(getBackground());

for (int i = 0; i < remainTimes; i++) {

g.drawLine(x1 + i / 2 + 2, y1 + i, x2 - i / 2 - 2, y1 + i);//覆盖上边的倒三角

}

}

if (remainTimes >= 50 && remainTimes <= 55)

overJLabel.setText(55-remainTimes +“s”);

if (remainTimes == 56)

overJLabel.setText(“OVER”);

}

public void setTimes(int x) {

this.remainTimes = x;

}

public int getTimes() {

return remainTimes;

}

public void run() {

while (dijiguan < 20) {

if (remainTimes == 0) {

JOptionPane.showMessageDialog(null, “游戏开始?”);

}

if (remainTimes == 56) {

JOptionPane.showMessageDialog(null, “时间到!游戏结束!”);

}

remainTimes++;

repaint();

try {

if (dijiguan < 6)

Thread.sleep(1500 - dijiguan * 100);

if (dijiguan >= 6 && dijiguan <= 8)

Thread.sleep(1000 - (dijiguan - 5) * 50);

if (dijiguan > 8)

Thread.sleep(850 - (dijiguan - 8) * 20);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

//是父类JPanel里的方法,会把整个面板用背景色重画一遍,起到清屏的作用

g.drawImage(ii.getImage(), 0, 0, this);

//绘制两个文本字符串

g.setColor(Color.white);

g.drawString("得分: " + score, 430, 165);

g.drawString(“第 " + (guanshu + 1) + " 关”, 430, 190);

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

switch (map[i][j]) {

case 0:

BlockButton[i][j].setVisible(false);

break;

case 1:

BlockButton[i][j].setIcon(aIcon);

break;

case 2:

BlockButton[i][j].setIcon(bIcon);

break;

case 3:

BlockButton[i][j].setIcon(cIcon);

break;

case 4:

BlockButton[i][j].setIcon(dIcon);

break;

case 5:

BlockButton[i][j].setIcon(eIcon);

break;

case 6:

BlockButton[i][j].setIcon(fIcon);

break;

case 7:

BlockButton[i][j].setIcon(gIcon);

break;

case 8:

BlockButton[i][j].setIcon(hIcon);

break;

case 9:

BlockButton[i][j].setIcon(iIcon);

break;

case 10:

BlockButton[i][j].setIcon(jIcon);

break;

case 11:

BlockButton[i][j].setIcon(kIcon);

break;

case 12:

BlockButton[i][j].setIcon(lIcon);

break;

case 13:

BlockButton[i][j].setIcon(mIcon);

break;

case 14:

BlockButton[i][j].setIcon(nIcon);

break;

case 15:

BlockButton[i][j].setIcon(oIcon);

break;

default:

break;

}

}

}

}

//重载

public void chongzai() {

jishushengyu = 0;

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

if (map[i][j] > 0) {

jishushengyu++;

}

}

}

int[][] map1 = new int[8][8];

this.map = map1;

Random random = new Random();

for (int i = 0; i < jishushengyu / 2; i++) {

kind = random.nextInt(Kinds) + 1;//0~3+1 === 1~4

do {

randomx1 = random.nextInt(8);//0-8随机数

randomy1 = random.nextInt(8);

} while (map[randomy1][randomx1] > 0);

map[randomy1][randomx1] = kind;

do {

randomx = random.nextInt(8);

randomy = random.nextInt(8);

} while (map[randomy][randomx] > 0);

map[randomy][randomx] = kind;

}

repaint();

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

BlockButton[i][j].setVisible(true);

}

}

}

public void newGame() {

// JOptionPane.showMessageDialog(null,“你按了开始按钮”);

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

BlockButton[i][j].setEnabled(true);

BlockButton[i][j].setVisible(true);

}

}

int[][] map = new int[8][8];

this.map = map;

newMap();

ld.setTimes(0);

score = 0;

guanshu = 0;

ld.setdijiguan(guanshu);

}

public void guoguan() {

int jishushengyu2 = 0;

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

if (map[i][j] > 0) {

jishushengyu2++;

}

}

}

if (jishushengyu2 == 0) {

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

BlockButton[i][j].setEnabled(true);

BlockButton[i][j].setVisible(true);

}

}

int[][] map = new int[8][8];

this.map = map;

newMap();

ld.setTimes(0);

guanshu++;

ld.setdijiguan(guanshu);

reLoad.setEnabled(true);

}

}

public void newMap() {

ArrayList numbers = new ArrayList();//链表

for (int i = 0; i < Kinds; i++) {

numbers.add(i + 1);//加到列表尾部

numbers.add(i + 1);

}//每一次重新布局的时候,能保证一定有前几种难度中的图片类型

Random random = new Random();

int temp = 0;

for (int i = 0; i < 32- Kinds; i++) {

temp = random.nextInt(Kinds) + 1;//0~kinds-1之间的随机数在加1

numbers.add(temp);

numbers.add(temp);

}

Collections.shuffle(numbers);//随机打乱原来的顺序

map = new int[8][8];

temp = 0;

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

//JOptionPane.showMessageDialog(null, numbers.get(temp));

map[i][j] = numbers.get(temp++).intValue();//get方法返回第i个元素,intvalue 返回int类型

}

}

}

public void itemStateChanged(ItemEvent e) {

// TODO 自动生成的方法存根

if (e.getSource() == difficultChoice) {

String selected = difficultChoice.getSelectedItem();

if (selected == “简单”) {

Kinds = 4;

newGame();

repaint();

} else if (selected == “中等”) {

Kinds = 8;

newGame();

repaint();

} else if (selected == “困难”) {

Kinds = 12;

newGame();

repaint();

} else if (selected == “变态”) {

Kinds = 15;

newGame();

repaint();

}

}

}

public void actionPerformed(ActionEvent e) {

// TODO 自动生成的方法存根

if (ld.getTimes() >56) {

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

BlockButton[j][i].setEnabled(false);

}

}

}

if (e.getSource() == reLoad) {

chongzai();

reLoad.setEnabled(false);

}

if (e.getSource() == newgameButton) {

newGame();

reLoad.setEnabled(true);

}

for (int i = 0; i < 8; i++) {

for (int j = 0; j < 8; j++) {

if (e.getSource() == BlockButton[j][i]) {

clicktimes++; // 点击的次数

lineStart.move(i, j);

if (clicktimes % 2 == 1) {

coordinatex1 = i;

coordinatey1 = j;

BlockButton[coordinatey1][coordinatex1].setEnabled(false);

BlockButton[coordinatey][coordinatex].setEnabled(true);

// BlockButton[j][i].setEnabled(false);

}

if (clicktimes % 2 == 0) {

coordinatex = i;

coordinatey = j;

BlockButton[coordinatey][coordinatex].setEnabled(false);

BlockButton[coordinatey1][coordinatex1].setEnabled(true);

}

}

}

}

this.requestFocus();

clearBlock();

/*

  • for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) {

  • BlockButton[j][i].setEnabled(true); }

  • }

*/

repaint();

}

// 判断在一列之内两图片之间是否全部是空白或直接相邻

private boolean containsAllOrNoneZeroInColumn(int posX1, int posY1,

int posX2, int posY2) {

// 直接相连,因而不包含空白

if (Math.abs(posY1 - posY2) == 0) {

return true;

}

int a = posY1 < posY2 ? posY1 : posY2;

int b = posY1 < posY2 ? posY2 : posY1;//y值:a小 b大

for (int j = a + 1; j < b; j++) {

if (map[posX1][j] != 0) {

return false;

}

}

return true;

}

// 判断在一行之内两图片之间是否全部是空白或直接相邻

private boolean containsAllOrNoneZeroInRow(int posX1, int posY1,

int posX2, int posY2) {

// 直接相连,因而不包含空白

if (Math.abs(posX1 - posX2) == 0) {

return true;

}

int a = posX1 < posX2 ? posX1 : posX2;

int b = posX1 < posX2 ? posX2 : posX1;

for (int i = a + 1; i < b; i++) {

if (map[i][posY1] != 0) {

return false;

}

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

ainsAllOrNoneZeroInRow(int posX1, int posY1,

int posX2, int posY2) {

// 直接相连,因而不包含空白

if (Math.abs(posX1 - posX2) == 0) {

return true;

}

int a = posX1 < posX2 ? posX1 : posX2;

int b = posX1 < posX2 ? posX2 : posX1;

for (int i = a + 1; i < b; i++) {

if (map[i][posY1] != 0) {

return false;

}

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-Oo3QgVkZ-1710851170224)]
[外链图片转存中…(img-DnlTgPLY-1710851170225)]
[外链图片转存中…(img-3AACvH2S-1710851170225)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-Nvrc57Cu-1710851170226)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值