求助高手!!java连连看数字改图片问题

我找到连连看的源代码,如何将随机数字改为自己想要的图片呢???本人菜鸟,希望有详细解答,不胜感激!!... 我找到连连看的源代码,如何将随机数字改为自己想要的图片呢???
本人菜鸟,希望有详细解答,不胜感激!!
展开
 我来答
匿名用户
2009-06-20
展开全部
//将 public void randomBuild() 之前的代码替换成如下代码:
//注意要替换成自己的图片目录

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FilenameFilter;

public class lianliankan implements ActionListener {
JFrame mainFrame; // 主面板
Container thisContainer;
JPanel centerPanel, southPanel, northPanel; // 子面板
JButton diamondsButton[][] = new JButton[6][5];// 游戏按钮数组
JButton exitButton, resetButton, newlyButton; // 退出,重列,重新开始按钮
JLabel fractionLable = new JLabel("0"); // 分数标签
JButton firstButton, secondButton; // 分别记录两次被选中的按钮
int grid[][] = new int[8][7];// 储存游戏按钮位置
static boolean pressInformation = false; // 判断是否有按钮被选中
int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg = 0, validateLV; // 游戏按钮的位置坐标
int i, j, k, n;// 消除方法控制

//=====================================//
//=============调用图片================//
private static Icon[] icons = new ImageIcon[6*5];
private static final String imgDir="f:/img";//这里填上图片目录全名就行了
static{
try{
File dir = new File(imgDir);
File[] imgFiles = dir.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".jpg");
}
});
for(int i=0; i<5*6; i++){
icons[i]=new ImageIcon(imgFiles[i].getAbsolutePath());
}
}catch(Exception e){e.printStackTrace();}
}

public void init() {

mainFrame = new JFrame("JKJ连连看");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel = new JPanel();
southPanel = new JPanel();
northPanel = new JPanel();
thisContainer.add(centerPanel, "Center");
thisContainer.add(southPanel, "South");
thisContainer.add(northPanel, "North");
centerPanel.setLayout(new GridLayout(6, 5));
for (int cols = 0; cols < 6; cols++) {
for (int rows = 0; rows < 5; rows++) {
// diamondsButton[cols][rows] = new JButton(String
// .valueOf(grid[cols + 1][rows + 1]));
//===============================设置图片==================================//
diamondsButton[cols][rows] = new JButton(icons[grid[cols + 1][rows + 1]-1]);
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton = new JButton("退出");
exitButton.addActionListener(this);
resetButton = new JButton("重列");
resetButton.addActionListener(this);
newlyButton = new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280, 100, 500, 450);
mainFrame.setVisible(true);
}
logo在线生成器
2024-10-28 广告
在上海数都信息科技有限公司,我们专注于技术创新,为用户提供高效、定制化的汉字图标生成解决方案。利用先进的图形处理与人工智能算法,我们能够快速将汉字转化为风格多样、视觉效果出众的图标。这些图标不仅保留了汉字的文化韵味,还融入了现代设计美学,广... 点击进入详情页
本回答由logo在线生成器提供
Raymondguo008
2009-06-20 · TA获得超过1634个赞
知道小有建树答主
回答量:887
采纳率:100%
帮助的人:478万
展开全部
给你个源代码吧
里面的图片自己把名字换成你自己要的就行了。
(帮南航的人写的一个程序)

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class MyLink implements ActionListener {

JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[10][10];//游戏按钮数组
ImageIcon[][] diamondsImg = new ImageIcon[10][10];
JButton resetButton,newlyButton; //退出,重列,重新开始按钮
ImageIcon resetImg = new ImageIcon("images/refresh.gif");
ImageIcon newImg = new ImageIcon("images/start.gif");
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //分别记录两次被选中的按钮
int grid[][] = new int[12][12];//储存游戏按钮位置
static boolean pressInformation=false; //判断是否有按钮被选中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
/*
public MyLink() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
*/

public void init() {
mainFrame=new JFrame("连连看——Raymondguo");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setResizable(false);
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel=new JPanel();
centerPanel.setLayout(new GridLayout(10,10));
southPanel=new JPanel();
southPanel.setLayout(new GridLayout(1,2));
northPanel=new JPanel();
thisContainer.add(centerPanel,"Center");
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");

for(int cols = 0;cols < 10;cols++) {
for(int rows = 0;rows < 10;rows++ ) {
String s = "images/" + (grid[cols+1][rows+1]) +".gif" ;
diamondsImg[cols][rows] = new ImageIcon(s);
diamondsButton[cols][rows] = new JButton(diamondsImg[cols][rows]);
diamondsButton[cols][rows].setSize(31,34);
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}

resetButton = new JButton(resetImg);
resetButton.setSize(156,48);
resetButton.addActionListener(this);
newlyButton = new JButton(newImg);
newlyButton.addActionListener(this);
newlyButton.setSize(156,48);
southPanel.add(newlyButton);
southPanel.add(resetButton);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(200,100,350,500);

mainFrame.setVisible(true);
}

public void randomBuild() {
int randoms,cols,rows;
for(int twins=1;twins<=50;twins++) {
randoms=(int)(Math.random()*38+1);
for(int alike=1;alike<=2;alike++) {
cols=(int)(Math.random()*10+1);
rows=(int)(Math.random()*10+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*10+1);
rows=(int)(Math.random()*10+1);
}
this.grid[cols][rows]=randoms;

}
}
}

public void fraction(){
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));
}

public void reload() {
int save[] = new int[100];
int n=0,cols,rows;
int grid[][]= new int[12][12];
for(int i=0;i<=10;i++) {
for(int j=0;j<=10;j++) {
if(this.grid[i][j]!=0) {
save[n]=this.grid[i][j];
n++;
}
}
}
n=n-1;
this.grid=grid;
while(n>=0) {
cols=(int)(Math.random()*10+1);
rows=(int)(Math.random()*10+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*10+1);
rows=(int)(Math.random()*10+1);
}
this.grid[cols][rows]=save[n];
n--;
}
mainFrame.setVisible(false);
pressInformation=false; //这里一定要将按钮点击信息归为初始
init();
for(int i = 0;i < 10;i++) {
for(int j = 0;j < 10;j++ ) {
if(grid[i+1][j+1]==0)
diamondsButton[i][j].setVisible(false);
}
}
}

public void estimateEven(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
pressInformation=true;
}
else {
x0=x;
y0=y;
fristMsg=secondMsg;
firstButton=secondButton;
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
if(fristMsg==secondMsg && secondButton!=firstButton){
xiao();
}
}
}

public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释
if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))) { //判断是否相邻
remove();
}
else {
for (j=0;j<12;j++ ) {
if (grid[x0][j]==0) { //判断第一个按钮同行哪个按钮为空
if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for (i=y-1;i>=j;i-- ) { //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0) {
k=0;
break;
}
else{ k=1; } //K=1说明通过了第一次验证
}
if (k==1) {
linePassOne();
}
}
if (y<j) { //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边
for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0){
k=0;
break;
}
else { k=1; }
}
if (k==1) {
linePassOne();
}
}
if (y==j ) {
linePassOne();
}
}

if (k==2) {
if (x0==x) {
remove();
}
if (x0<x) {
for (n=x0;n<=x-1;n++ ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 && n==x-1) {
remove();
}
}
}
if (x0>x) {
for (n=x0;n>=x+1 ;n-- ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 && n==x+1) {
remove();
}
}
}
}
}

for (i=0;i<12;i++ ) { //列
if (grid[i][y0]==0) {
if (x>i) {
for (j=x-1;j>=i ;j-- ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x<i) {
for (j=x+1;j<=i;j++ ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x==i) {
rowPassOne();
}
}
if (k==2){
if (y0==y) {
remove();
}
if (y0<y) {
for (n=y0;n<=y-1 ;n++ ) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y-1) {
remove();
}
}
}
if (y0>y) {
for (n=y0;n>=y+1 ;n--) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y+1) {
remove();
}
}
}
}
}
}
}
public void linePassOne(){
if (y0>j){ //第一按钮同行空按钮在左边
for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮
if (grid[x0][i]!=0) {
k=0;
break;
}
else { k=2; } //K=2说明通过了第二次验证
}
}
if (y0<j){ //第一按钮同行空按钮在与第二按钮之间
for (i=y0+1;i<=j ;i++){
if (grid[x0][i]!=0) {
k=0;
break;
}
else{ k=2; }
}
}
}
public void rowPassOne(){
if (x0>i) {
for (j=x0-1;j>=i ;j-- ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
if (x0<i) {
for (j=x0+1;j<=i ;j++ ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
}
public void remove(){
firstButton.setVisible(false);
secondButton.setVisible(false);
fraction();
pressInformation=false;
k=0;
grid[x0][y0]=0;
grid[x][y]=0;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==newlyButton){
int grid[][] = new int[12][12];
this.grid = grid;
randomBuild();
mainFrame.setVisible(false);
pressInformation=false;
init();
}

if(e.getSource()==resetButton)
reload();
for(int cols = 0;cols < 10;cols++){
for(int rows = 0;rows < 10;rows++ ){
if(e.getSource()==diamondsButton[cols][rows])
estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);
}
}
}
public static void main(String[] args) {
MyLink llk = new MyLink();
llk.randomBuild();
llk.init();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶掣樊夏烟
2020-06-16 · TA获得超过3714个赞
知道小有建树答主
回答量:3151
采纳率:25%
帮助的人:404万
展开全部
//将
public
void
randomBuild()
之前的代码替换成如下代码:
//注意要替换成自己的图片目录
import
javax.swing.*;
import
java.awt.*;
import
java.awt.event.*;
import
java.io.File;
import
java.io.FilenameFilter;
public
class
lianliankan
implements
ActionListener
{
JFrame
mainFrame;
//
主面板
Container
thisContainer;
JPanel
centerPanel,
southPanel,
northPanel;
//
子面板
JButton
diamondsButton[][]
=
new
JButton[6][5];//
游戏按钮数组
JButton
exitButton,
resetButton,
newlyButton;
//
退出,重列,重新开始按钮
JLabel
fractionLable
=
new
JLabel("0");
//
分数标签
JButton
firstButton,
secondButton;
//
分别记录两次被选中的按钮
int
grid[][]
=
new
int[8][7];//
储存游戏按钮位置
static
boolean
pressInformation
=
false;
//
判断是否有按钮被选中
int
x0
=
0,
y0
=
0,
x
=
0,
y
=
0,
fristMsg
=
0,
secondMsg
=
0,
validateLV;
//
游戏按钮的位置坐标
int
i,
j,
k,
n;//
消除方法控制
//=====================================//
//=============调用图片================//
private
static
Icon[]
icons
=
new
ImageIcon[6*5];
private
static
final
String
imgDir="f:/img";//这里填上图片目录全名就行了
static{
try{
File
dir
=
new
File(imgDir);
File[]
imgFiles
=
dir.listFiles(new
FilenameFilter(){
public
boolean
accept(File
dir,
String
name)
{
return
name.toLowerCase().endsWith(".jpg");
}
});
for(int
i=0;
i<5*6;
i++){
icons[i]=new
ImageIcon(imgFiles[i].getAbsolutePath());
}
}catch(Exception
e){e.printStackTrace();}
}
public
void
init()
{
mainFrame
=
new
JFrame("JKJ连连看");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisContainer
=
mainFrame.getContentPane();
thisContainer.setLayout(new
BorderLayout());
centerPanel
=
new
JPanel();
southPanel
=
new
JPanel();
northPanel
=
new
JPanel();
thisContainer.add(centerPanel,
"Center");
thisContainer.add(southPanel,
"South");
thisContainer.add(northPanel,
"North");
centerPanel.setLayout(new
GridLayout(6,
5));
for
(int
cols
=
0;
cols
<
6;
cols++)
{
for
(int
rows
=
0;
rows
<
5;
rows++)
{
//
diamondsButton[cols][rows]
=
new
JButton(String
//
.valueOf(grid[cols
+
1][rows
+
1]));
//===============================设置图片==================================//
diamondsButton[cols][rows]
=
new
JButton(icons[grid[cols
+
1][rows
+
1]-1]);
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton
=
new
JButton("退出");
exitButton.addActionListener(this);
resetButton
=
new
JButton("重列");
resetButton.addActionListener(this);
newlyButton
=
new
JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280,
100,
500,
450);
mainFrame.setVisible(true);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式