




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第基于Java实现连连看游戏的示例代码ArrayListIntegernumbers=newArrayListInteger//链表
for(inti=0;iKinds;i++){
numbers.add(i+1);//加到列表尾部
numbers.add(i+1);
}//每一次重新布局的时候,能保证一定有前几种难度中的图片类型
Randomrandom=newRandom();
inttemp=0;
for(inti=0;i32-Kinds;i++){
temp=random.nextInt(Kinds)+1;//0~kinds-1之间的随机数在加1
numbers.add(temp);
numbers.add(temp);
Collections.shuffle(numbers);//随机打乱原来的顺序
map=newint[8][8];
temp=0;
for(inti=0;ii++){
for(intj=0;jj++){
//JOptionPane.showMessageDialog(null,numbers.get(temp));
map[i][j]=numbers.get(temp++).intValue();//get方法返回第i个元素,intvalue返回int类型
publicvoiditemStateChanged(ItemEvente){
//TODO自动生成的方法存根
if(e.getSource()==difficultChoice){
Stringselected=difficultChoice.getSelectedItem();
if(selected=="简单"){
Kinds=4;
newGame();
repaint();
}elseif(selected=="中等"){
Kinds=8;
newGame();
repaint();
}elseif(selected=="困难"){
Kinds=12;
newGame();
repaint();
}elseif(selected=="变态"){
Kinds=15;
newGame();
repaint();
publicvoidactionPerformed(ActionEvente){
//TODO自动生成的方法存根
if(ld.getTimes()56){
for(inti=0;ii++){
for(intj=0;jj++){
BlockButton[j][i].setEnabled(false);
if(e.getSource()==reLoad){
chongzai();
reLoad.setEnabled(false);
if(e.getSource()==newgameButton){
newGame();
reLoad.setEnabled(true);
for(inti=0;ii++){
for(intj=0;jj++){
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(inti=0;ii++){for(intj=0;jj++){
*BlockButton[j][i].setEnabled(true);}
repaint();
//--------------------------------------------------------------------------
//判断在一列之内两图片之间是否全部是空白或直接相邻
privatebooleancontainsAllOrNoneZeroInColumn(intposX1,intposY1,
intposX2,intposY2){
//直接相连,因而不包含空白
if(Math.abs(posY1-posY2)==0){
returntrue;
inta=posY1posY2posY1:posY2;
intb=posY1posY2posY2:posY1;//y值:a小b大
for(intj=a+1;jj++){
if(map[posX1][j]!=0){
returnfalse;
returntrue;
//判断在一行之内两图片之间是否全部是空白或直接相邻
privatebooleancontainsAllOrNoneZeroInRow(intposX1,intposY1,
intposX2,intposY2){
//直接相连,因而不包含空白
if(Math.abs(posX1-posX2)==0){
returntrue;
inta=posX1posX2posX1:posX2;
intb=posX1posX2posX2:posX1;
for(inti=a+1;ii++){
if(map[i][posY1]!=0){
returnfalse;
returntrue;
//是否可以一直线相连
privatebooleanisLinkByOneLine(intposX1,intposY1,intposX2,
intposY2){
if(posX1!=posX2posY1!=posY2){
returnfalse;
if(posX1==posX2){
if(containsAllOrNoneZeroInColumn(posX1,posY1,posX2,posY2)){
returntrue;
if(posY1==posY2){
if(containsAllOrNoneZeroInRow(posX1,posY1,posX2,posY2)){
returntrue;
returnfalse;
//是否可以两直线相连
privatebooleanisLinkByTwoLines(intposX1,intposY1,intposX2,
intposY2){
if(posX1!=posX2posY1!=posY2){
//x1,y1tox2,y1tox2,y2
if(containsAllOrNoneZeroInRow(posX1,posY1,posX2,posY1)
map[posX2][posY1]==0
containsAllOrNoneZeroInColumn(posX2,posY1,posX2,
posY2)){
returntrue;
//x1,y1tox1,y2tox2,y2
if(containsAllOrNoneZeroInColumn(posX1,posY1,posX1,posY2)
map[posX1][posY2]==0
containsAllOrNoneZeroInRow(posX1,posY2,posX2,
posY2)){
returntrue;
returnfalse;
//是否可以三直线相连
privatebooleanisLinkByThreeLines(intposX1,intposY1,intposX2,
intposY2){
if(isOnSameEdge(posX1,posY1,posX2,posY2)){
returntrue;
if(isOnThreeLinesLikeArc(posX1,posY1,posX2,posY2)){
returntrue;
if(isOnThreeLinesLikeZigzag(posX1,posY1,posX2,posY2)){
returntrue;
returnfalse;
//是否可以三直线相连,似U形
privatebooleanisOnThreeLinesLikeArc(intposX1,intposY1,intposX2,
intposY2){
if(isOnUpArc(posX1,posY1,posX2,posY2)){
returntrue;
if(isOnDownArc(posX1,posY1,posX2,posY2)){
returntrue;
if(isOnLeftArc(posX1,posY1,posX2,posY2)){
returntrue;
if(isOnRightArc(posX1,posY1,posX2,posY2)){
returntrue;
returnfalse;
//∪
privatebooleanisOnUpArc(intposX1,intposY1,intposX2,intposY2){
//Y--0
intlessY=posY1posY2posY1:posY2;//找小y
for(intj=lessY-1;jj--){
if(containsAllOrNoneZeroInRow(posX1,j,posX2,j)
containsAllOrNoneZeroInColumn(posX1,posY1,posX1,j)
containsAllOrNoneZeroInColumn(posX2,posY2,posX2,j)
map[posX1][j]==0map[posX2][j]==0){
returntrue;
if(isOnSameEdge(posX1,0,posX2,0)
containsAllOrNoneZeroInColumn(posX1,posY1,posX1,0)
containsAllOrNoneZeroInColumn(posX2,posY2,posX2,0)
(map[posX1][0]==0map[posX2][0]==0
||map[posX1][0]==0
map[posX2][0]==map[posX2][posY2]||map[posX1][0]==map[posX1][posY1]
map[posX2][0]==0)){
returntrue;
returnfalse;
//∩
privatebooleanisOnDownArc(intposX1,intposY1,intposX2,intposY2){
intmoreY=posY1posY2posY2:posY1;
for(intj=moreY+1;j=8-1;j++){
if(containsAllOrNoneZeroInRow(posX1,j,posX2,j)
containsAllOrNoneZeroInColumn(posX1,posY1,posX1,j)
containsAllOrNoneZeroInColumn(posX2,posY2,posX2,j)
map[posX1][j]==0map[posX2][j]==0){
returntrue;
if(isOnSameEdge(posX1,8-1,posX2,8-1)
containsAllOrNoneZeroInColumn(posX1,posY1,posX1,8-1)
containsAllOrNoneZeroInColumn(posX2,posY2,posX2,8-1)
(map[posX1][8-1]==0map[posX2][8-1]==0
||map[posX1][8-1]==map[posX1][posY1]
map[posX2][8-1]==0||map[posX1][8-1]==0
map[posX2][8-1]==map[posX2][posY2])){
returntrue;
returnfalse;
//﹚
privatebooleanisOnLeftArc(intposX1,intposY1,intposX2,intposY2){
intlessX=posX1posX2posX1:posX2;
for(inti=lessX-1;ii--){
if(containsAllOrNoneZeroInColumn(i,posY1,i,posY2)
containsAllOrNoneZeroInRow(i,posY1,posX1,posY1)
containsAllOrNoneZeroInRow(i,posY2,posX2,posY2)
map[i][posY1]==0map[i][posY2]==0){
returntrue;
if(isOnSameEdge(0,posY1,0,posY2)
containsAllOrNoneZeroInRow(0,posY1,posX1,posY1)
containsAllOrNoneZeroInRow(0,posY2,posX2,posY2)
(map[0][posY1]==0map[0][posY2]==0
||map[0][posY1]==map[posX1][posY1]
map[0][posY2]==0||map[0][posY1]==0
map[0][posY2]==map[posX2][posY2])){
returntrue;
returnfalse;
//(
privatebooleanisOnRightArc(intposX1,intposY1,intposX2,intposY2){
intmoreX=posX1posX2posX2:posX1;
for(inti=moreX+1;i=8-1;i++){
if(containsAllOrNoneZeroInColumn(i,posY1,i,posY2)
containsAllOrNoneZeroInRow(i,posY1,posX1,posY1)
containsAllOrNoneZeroInRow(i,posY2,posX2,posY2)
map[i][posY1]==0map[i][posY2]==0){
returntrue;
if(isOnSameEdge(8-1,posY1,8-1,posY2)
containsAllOrNoneZeroInRow(posX1,posY1,8-1,posY1)
containsAllOrNoneZeroInRow(posX2,posY2,8-1,posY2)
(map[8-1][posY1]==0map[8-1][posY2]==0
||map[8-1][posY1]==map[posX1][posY1]
map[8-1][posY2]==0||map[8-1][posY1]==0
map[8-1][posY2]==map[posX2][posY2])){
returntrue;
returnfalse;
//是否可以三直线相连,似之字形N
privatebooleanisOnThreeLinesLikeZigzag(intposX1,intposY1,
intposX2,intposY2){
if(isOnZigzagWith1Row2Cols(posX1,posY1,posX2,posY2)){
returntrue;
if(isOnZigzagWith2Rows1Col(posX1,posY1,posX2,posY2)){
returntrue;
returnfalse;
//是否可以三直线相连,似之字形,两行一列Z
privatebooleanisOnZigzagWith2Rows1Col(intposX1,intposY1,
intposX2,intposY2){
intmoreX=posX1posX2posX2:posX1;
intlessX=posX1posX2posX1:posX2;
for(inti=lessX+1;imoreX;i++){
if(containsAllOrNoneZeroInColumn(i,posY1,i,posY2)
containsAllOrNoneZeroInRow(i,posY1,posX1,posY1)
containsAllOrNoneZeroInRow(i,posY2,posX2,posY2)
map[i][posY1]==0map[i][posY2]==0){
returntrue;
returnfalse;
//是否可以三直线相连,似之字形,一行两列
privatebooleanisOnZigzagWith1Row2Cols(intposX1,intposY1,
intposX2,intposY2){
intmoreY=posY1posY2posY2:posY1;
intlessY=posY1posY2posY1:posY2;
for(intj=lessY+1;jmoreY;j++){
if(containsAllOrNoneZeroInRow(posX1,j,posX2,j)
containsAllOrNoneZeroInColumn(posX1,posY1,posX1,j)
containsAllOrNoneZeroInColumn(posX2,posY2,posX2,j)
map[posX1][j]==0map[posX2][j]==0){
returntrue;
returnfalse;
//是否处于游戏区域的4条边的同一边上
privatebooleanisOnSameEdge(intposX1,intposY1,intposX2,intposY2){
if((posY1==posY2posY2==0)
||(posY1==posY2posY2==8-1)
||(posX1==posX2posX2==0)
||(posX1==posX2posX2==8-1)){
returntrue;
returnfalse;
//--------------------------------------------------------------------------
publicbooleanifcanTouch(intposX1,intposY1,intposX2,intposY2){
if(isLinkByOneLine(posX1,posY1,posX2,posY2)){
returntrue;
//是否可以两直线相连
if(isLinkByTwoLines(posX1,posY1,posX2,posY2)){
returntrue;
//是否可以三直线相连
if(isLinkByThreeLines(posX1,posY1,posX2,posY2)){
returntrue;
returnfalse;
publicvoidclearBlock(){
if(clicktimes=2){
if(map[coordinatey1][coordinatex1]==map[coordinatey][coordinatex]
!((coordinatex1==coordinatex)(coordinatey1==coordinatey))){
if(ifcanTouch(coordinatey1,coordinatex1,coordinatey,
coordinatex)){
if(map[coordinatey1][coordinatex1]0)
score=score+10;
map[coordinatey1][coordinatex1]=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商铺租金分割协议书
- 华中停工待岗协议书
- 2025年财务管理考试基础回顾与提升试题及答案
- 地震房屋保护协议书
- 台球维修合同协议书
- 合伙经营钓场协议书
- 2025年合同履行担保方式深度解析
- 分割老公财产协议书
- 合同续约补充协议书
- 劳动关系续约协议书
- 建筑公司礼仪培训
- 美国跨境电商市场情况
- 2025年江苏无锡宜兴市国有资本投资控股集团有限公司招聘笔试参考题库附带答案详解
- 江苏省苏州市吴中、吴江、相城、高新区2024-2025学年七年级上学期期末阳光调研道法试卷(含答案)
- 2024-2030年中国检验检测行业发展潜力预测及投资战略研究报告
- 融资融券与投资者行为
- 装配式建筑深化设计-1.2.3 装配式建筑深化设计拆分原47课件讲解
- 2025年中考数学二轮专题复习 题型五-几何探究题
- 【MOOC】园林植物应用设计-北京林业大学 中国大学慕课MOOC答案
- R1快开门式压力容器操作考试题及答案
- 广东开放大学国家安全概论(S)(本专)考核作业参考原题试题
评论
0/150
提交评论