C语言实现宾果消消乐

本文实例为大家分享了C语言宾果消消乐的具体代码,供大家参考,具体内容如下

```c
#include<graphics.h>
#include<stdio.h>
#include<windows.h>
#include <conio.h>
#include<time.h>
#include<mmsystem.h>
#define MAPSIZE 10

int map[MAPSIZE][MAPSIZE];
int map2[MAPSIZE][MAPSIZE];
bool state[MAPSIZE][MAPSIZE];
bool state1[MAPSIZE][MAPSIZE];
typedef struct game
{
  int game_state;
  int counts;
  int score;
  int targets;
  int level;
  int state;
  int level_state;
  int tool_number;
  int tool_state;
  int start_state;
  PIMAGE img[21];
} Game;
Game game;
int high=0;

void init_img()
{
  int i;
  for(i=0; i<21; i++)
    game.img[i]=newimage();
  getimage(game.img[0],"game\\underground.jpg");
  getimage(game.img[1],"game\\red.jpg");
  getimage(game.img[2],"game\\green.jpg");
  getimage(game.img[3],"game\\blue.jpg");
  getimage(game.img[4],"game\\orange.jpg");
  getimage(game.img[5],"game\\purple.jpg");
  getimage(game.img[6],"game\\brown.jpg");
  getimage(game.img[7],"game\\123.jpg");
  getimage(game.img[8],"game\\end.jpg");
  getimage(game.img[9],"game\\bomb.jpg");
  getimage(game.img[10],"game\\win.png");

  getimage(game.img[11],"game\\hon.jpg");
  getimage(game.img[12],"game\\lu.jpg");
  getimage(game.img[13],"game\\lan.jpg");
  getimage(game.img[14],"game\\cheng.jpg");
  getimage(game.img[15],"game\\zi.jpg");
  getimage(game.img[16],"game\\hui.jpg");

  getimage(game.img[17],"game\\receive.png");
  getimage(game.img[18],"game\\in.jpg");
  getimage(game.img[19],"game\\black.jpg");
  getimage(game.img[20],"game\\start.jpg");
}
void init_map()
{
  int i,j;
  srand(time(0));
  for (i=0; i<MAPSIZE; i++)
    for (j=0; j<MAPSIZE; j++)
    {
      state[i][j]=false;
      map[i][j]=rand()%6+1;
      map2[i][j]=map[i][j];//备份图形
    }
}

void read(int *high)
{
  FILE *fp;
  fp=fopen("bag.b","rb");
  if(fp==NULL)
    return;
  fread(high,sizeof(int),1,fp);
  fclose(fp);
}
void save(int *high)
{
  FILE *fp;
  fp=fopen("bag.b","wb");
  if(fp==NULL)
    return;
  fwrite(high,sizeof(int),1,fp);
  fclose(fp);
}

//显示关卡
void show_level()
{
  char str[4],str2[8];
  putimage(0,0,game.img[0]);
  sprintf(str, "%4d ", game.level);
  sprintf(str2, "%4d ", game.targets);
  setfont(40,0,"隶书");
  setcolor(EGERGB(255,255,255));
  setbkmode(TRANSPARENT);
  outtextxy(160,330,"第  关");
  outtextxy(160,330,str);
  setfont(30,0,"隶书");
  outtextxy(150,400,"目标分:");
  outtextxy(270,400,str2);

  Sleep(1000);
  cleardevice();

}
//显示分数
void show_word()
{
  char str[4],str1[8],str2[8],scores[8],str3[4];
  if(game.score>high)
  {
    high=game.score;
    save(&high);
  }
  putimage(0,0,game.img[0]);
  setfont(30,0,"隶书");
  setcolor(EGERGB(250, 210, 0));
  setbkmode(TRANSPARENT);
  outtextxy(10,15, "最高记录: ");
  outtextxy(10,55, "关卡: ");
  outtextxy(150,55, "目标分: ");

  sprintf(str, "%4d ", game.level);
  sprintf(str1, "%4d ", high);
  sprintf(str2, "%4d ", game.targets);
  sprintf(scores, "%4d ", game.score);
  sprintf(str3, "%d", game.tool_number);
  setcolor(EGERGB(255, 255, 255));
  outtextxy(60, 55, str);
  outtextxy(150, 15, str1);
  outtextxy(260, 55, str2);
  outtextxy(205, 102, scores);

  setfont(25,0,"隶书");
  outtextxy(410,1,str3);

}
void show_map()
{
  if(game.level_state==1)
    show_level();
  show_word();
  int i,j;
  for (i=0; i<MAPSIZE; i++)
  {
    for (j=0; j<MAPSIZE; j++)
      if(!state[i][j])
      {
        if(map[i][j]==1)
          putimage(j*45,i*45+250,game.img[map[i][j]]);
        else if(map[i][j]==2)
          putimage(j*45,i*45+250,game.img[map[i][j]]);
        else if(map[i][j]==3)
          putimage(j*45,i*45+250,game.img[map[i][j]]);
        else if(map[i][j]==4)
          putimage(j*45,i*45+250,game.img[map[i][j]]);
        else if(map[i][j]==5)
          putimage(j*45,i*45+250,game.img[map[i][j]]);
        else if(map[i][j]==6)
          putimage(j*45,i*45+250,game.img[map[i][j]]);
      }
  }
}
//音频
void musicu()
{
  mciSendString("close mymusicu",NULL,0,NULL);
  mciSendString("open game\\unbelievable.mp3 alias mymusicu",NULL,0,NULL);
  mciSendString("play mymusicu",NULL,0,NULL);
}
void musicc()
{
  mciSendString("close mymusicc",NULL,0,NULL);
  mciSendString("open game\\click.mp3 alias mymusicc",NULL,0,NULL);
  mciSendString("play mymusicc",NULL,0,NULL);
}
void musicf()
{
  mciSendString("close mymusicf",NULL,0,NULL);
  mciSendString("open game\\fail.mp3 alias mymusicf",NULL,0,NULL);
  mciSendString("play mymusicf",NULL,0,NULL);
}
void musicd()
{
  mciSendString("close mymusicd",NULL,0,NULL);
  mciSendString("open game\\delt.mp3 alias mymusicd",NULL,0,NULL);
  mciSendString("play mymusicd",NULL,0,NULL);
}
void musicb()
{
  mciSendString("close mymusicb",NULL,0,NULL);
  mciSendString("open game\\bomb.mp3 alias mymusicb",NULL,0,NULL);
  mciSendString("play mymusicb",NULL,0,NULL);
}
void musicp()
{
  mciSendString("close mymusicp",NULL,0,NULL);
  mciSendString("open game\\popwindows.mp3 alias mymusicp",NULL,0,NULL);
  mciSendString("play mymusicp",NULL,0,NULL);
}
void musicsheng()
{
  mciSendString("close mymusicsheng",NULL,0,NULL);
  mciSendString("open game\\成功.mp3 alias mymusicsheng",NULL,0,NULL);
  mciSendString("play mymusicsheng",NULL,0,NULL);
}

//判断此位置是否符合
int avaliable(int x,int y)
{
  if(x<0||x>=MAPSIZE||y<0||y>=MAPSIZE||state[y][x])
    return 0;
  else
    return 1;
}
//搜索周围相同颜色
void search_map(int x,int y,int target)
{
  if((!avaliable(x,y))||map[y][x]!=target)
    return;
  state[y][x]=true;
  state1[y][x]=true;
  game.counts++;
  search_map(x-1,y,target);
  search_map(x+1,y,target);
  search_map(x,y-1,target);
  search_map(x,y+1,target);

}
//搜索到相同颜色后调整位置
void adjust_map()
{
  int i,j,r,k;
  int temp[10][10];
  for(j=MAPSIZE-1; j>=0; j--)
  {
    int m=0;
    int flag=1;
    k=j;
    for(i=MAPSIZE-1; i>=0; i--)
      if(state[i][j]==false)
        flag=0;
    if(flag==1)
    {
      if(k==MAPSIZE-1)
        continue;
      while(1)
      {
        if(k==MAPSIZE-1)
          break;
        for(i=MAPSIZE-1; i>=0; i--)
        {
          map[i][k]=map[i][k+1];
          state[i][k]=state[i][k+1];
          state[i][k+1]=true;
        }
        k++;
      }
    }
    for(i=MAPSIZE-1; i>=0; i--)
      if(!state[i][j])
      {
        temp[m][j]=map[i][j];
        m++;
      }
    r=MAPSIZE-1;
    for(i=0; i<m; i++)
    {
      map[r][j]=temp[i][j];
      state[r][j]=false;
      r--;
    }
    for(; r>=0; r--)
    {
      state[r][j]=true;
    }

  }
}

//判断是否通过本关
int end_map()
{
  int i,j,target;
  int x;
  int y;
  int flag=1;
  for(i=0; i<MAPSIZE; i++)
    for(j=0; j<MAPSIZE; j++)
      if(!state[i][j])
      {
        x=j;
        y=i;
        target=map[y][x];
        if((avaliable(x+1,y)&&map[y][x+1]==target)||(avaliable(x-1,y)&&map[y][x-1]==target)
            ||(avaliable(x,y-1)&&map[y-1][x]==target)||(avaliable(x,y+1)&&map[y+1][x]==target))
        {
          flag=0;
          break;
        }
      }
  return flag;
}

//弹出炸弹窗口,选择是否使用道具
int bomb_pop()
{
  mouse_msg ms;
  while(1)
  {
    show_map();
    putimage(88, 280, game.img[9]);
    while(mousemsg())
    {
      ms=getmouse();
      if(ms.is_left()&&ms.is_down())
      {
        if(ms.x>105&&ms.x<230&&ms.y>380&&ms.y<425)
        {
          musicc();
          return 0;
        }
        if(ms.x>240&&ms.x<370&&ms.y>380&&ms.y<420)
        {
          musicc();
          return 1;
        }
      }
    }
    Sleep(500);
  }

}

//点击要炸裂的某一列
void bomb_map()
{
  int i;
  int x,y;
  mouse_msg msg;
  while(1)
  {
    show_map();
    while(mousemsg())
    {
      msg=getmouse();
      if(msg.is_left()&&msg.is_down())
      {
        musicc();
        x=msg.x/45;
        y=(msg.y-250)/45;
        if(!avaliable(x,y))
          continue;
        for(i=0; i<MAPSIZE; i++)
          if(state[i][x]==false)
          {
            state[i][x]=true;
            game.counts++;
          }
        return;
      }
    }
    Sleep(500);
  }
}
//打印出要消除图形的碎片
void flash_map(int target)
{
  int i,j;
  show_map();
  for(i=0; i<MAPSIZE; i++)
    for(j=0; j<MAPSIZE; j++)
      if(state1[i][j]==true)
      {
        musicd();
        if(target==1)
          putimage(j*45,i*45+250,game.img[11]);
        else if(target==2)
          putimage(j*45,i*45+250,game.img[12]);
        else if(target==3)
          putimage(j*45,i*45+250,game.img[13]);
        else if(target==4)
          putimage(j*45,i*45+250,game.img[14]);
        else if(target==5)
          putimage(j*45,i*45+250,game.img[15]);
        else if(target==6)
          putimage(j*45,i*45+250,game.img[16]);

      }
  Sleep(200);
}

//碎片消除后,恢复以前状态
void state1_back()
{
  int i,j;
  for(i=0; i<MAPSIZE; i++)
    for(j=0; j<MAPSIZE; j++)
      state1[i][j]=false;
}
void play_game()
{
  init_map();
  int target;
  int x,y;
  int i,j;
  mouse_msg msg;
  if(game.state==0)//重新开始游戏时将现有分数置为0
    game.score=0;
  else
    game.score=game.score;

  while(1)
  {
    show_map();
    game.level_state=0;
    while(mousemsg())
    {
      msg=getmouse();
      if(msg.is_left()&&msg.is_down())
      {

        musicc();
        if(msg.x>400&&msg.x<450&&msg.y>=40&&msg.y<100&&game.tool_number>=5)//使用炸弹
        {
          musicp();
          if(bomb_pop())
          {
            bomb_map();
            musicb();
            adjust_map();
            game.score=game.score+game.counts*20;
            game.tool_number=game.tool_number-5;
            show_map();
            game.counts=0;
          }

        }
        else
        {
          x=msg.x/45;
          y=(msg.y-250)/45;
          if(!avaliable(x,y))
            continue;
          target=map[y][x];

          if((avaliable(x+1,y)&&map[y][x+1]==target)||(avaliable(x-1,y)&&map[y][x-1]==target)
              ||(avaliable(x,y-1)&&map[y-1][x]==target)||(avaliable(x,y+1)&&map[y+1][x]==target))
          {
            search_map(x,y,target);
            game.score=game.score+game.counts*20;
            if(game.counts>=6)
            {
              game.tool_number=game.tool_number+3;
              musicu();
            }
            flash_map(target);
            adjust_map();
          }
          game.counts=0;
          show_map();
          Sleep(100);
          state1_back();
          if(end_map())
          {
            if(game.score>=game.targets)
            {
              musicsheng();
              game.game_state=2;
              return;
            }
            else if(game.score<game.targets)
            {
              musicf();
              game.game_state=-1;

              return ;
            }
          }
        }
      }
    }
  }
}

//领取魔法鱼
void get_tool()
{
  mouse_msg ms;
  while(1)
  {

    putimage(0,0,game.img[7]);
    putimage_transparent(NULL,game.img[17],88,280,0);
    while(mousemsg())
    {
      ms=getmouse();
      if(ms.is_left()&&ms.is_down())
      {
        if(ms.x>170&&ms.x<300&&ms.y>380&&ms.y<420)
        {
          musicc();
          game.tool_number=10;
          game.tool_state=0;
          return ;
        }

      }
    }
    Sleep(500);
  }
}
//游戏指南界面
void inter_game()
{
  mouse_msg ms;
  while(1)
  {
    putimage(0,0,game.img[18]);
    while(mousemsg())
    {
      ms=getmouse();
      if(ms.is_left()&&ms.is_down())
      {
        musicc();
        game.game_state=0;
        return;
      }
    }
    Sleep(500);
  }

}

void start_game()
{
  mouse_msg ms;
  if(game.start_state==1)
  {
    putimage(0,0,game.img[19]);
    Sleep(500);
    putimage(0,0,game.img[20]);
    Sleep(500);
    game.start_state=0;
  }
  while(1)
  {
    putimage(0,0,game.img[7]);
    while(mousemsg())
    {
      ms=getmouse();
      if(ms.is_left()&&ms.is_down())
      {

        musicc();
        if(ms.x>140&&ms.x<310&&ms.y>370&&ms.y<410)
        {
          if(game.tool_state==1)
          {
            musicp();
            get_tool();
          }
          game.game_state=1;
          game.level_state=1;
          return;
        }
        if(ms.x>140&&ms.x<310&&ms.y>420&&ms.y<460)
        {

          game.game_state=3;
          return;
        }
        if(ms.x>140&&ms.x<310&&ms.y>470&&ms.y<500)
        {
          game.game_state=5;
          return;
        }
      }
    }
    Sleep(500);
  }
}
void fail_again()
{
  int i,j;
  int target;
  int x,y;
  int flag=0;
  mouse_msg msg;

  for(i=0; i<MAPSIZE; i++)
    for(j=0; j<MAPSIZE; j++)
    {
      state[i][j]=false;
      map[i][j]=map2[i][j];
    }

  while(1)
  {
    show_map();
    while(mousemsg())
    {
      msg=getmouse();
      if(msg.is_left()&&msg.is_down())
      {
        musicc();
        if(msg.x>400&&msg.x<450&&msg.y>=40&&msg.y<100&&game.tool_number>=5)
        {
          musicp();
          if(bomb_pop())
          {
            bomb_map();
            musicb();
            adjust_map();
            game.score=game.score+game.counts*20;
            game.tool_number=game.tool_number-5;

            show_map();
            game.counts=0;
          }
        }
        else
        {
          x=msg.x/45;
          y=(msg.y-250)/45;
          if(!avaliable(x,y))
            continue;
          target=map[y][x];

          if((avaliable(x+1,y)&&map[y][x+1]==target)||(avaliable(x-1,y)&&map[y][x-1]==target)
              ||(avaliable(x,y-1)&&map[y-1][x]==target)||(avaliable(x,y+1)&&map[y+1][x]==target))
          {
            search_map(x,y,target);
            game.score=game.score+game.counts*20;
            if(game.counts>=6)
            {
              game.tool_number=game.tool_number+3;
              musicu();
            }
            flash_map(target);
            adjust_map();
          }
          game.counts=0;
          show_map();
          Sleep(100);
          state1_back();
          if(end_map())
          {
            if(game.score>=game.targets)
            {
              musicsheng();
              game.game_state=2;
              return;
            }
            else if(game.score<game.targets)
            {
              musicf();
              game.game_state=-1;
              return ;
            }
          }
        }
      }
    }
  }
}
void end_game()
{
  mouse_msg msg;
  while(1)
  {
    show_map();
    putimage(100, 320, game.img[8]);
    setfont(30,0,"隶书");
    setcolor(EGERGB(255,255,255));
    setbkmode(TRANSPARENT);
    outtextrect(120,330, 180,450,"闯关失败,是否重闯本关?");
    while (mousemsg())
    {
      msg = getmouse();
      if(msg.is_left()&&msg.is_down())
      {
        if(msg.x>115&&msg.x<222&&msg.y>400&&msg.y<430)
        {
          musicc();
          game.game_state=0;
          game.state=0;
          game.level=1;
          game.targets=1500;
          game.score=0;
          return ;
        }
        if(msg.x>230&&msg.x<336&&msg.y>400&&msg.y<430)
        {
          musicc();
          if(game.level>1)
            game.score=game.score-1500;
          else if(game.level==1)
            game.score=0;
          game.game_state=4;
          return ;
        }
      }
    }
    Sleep(500);
  }
}
void win_game()
{
  mouse_msg msg;
  while(1)
  {
    show_map();
    putimage_transparent(NULL,game.img[10],130,300,0);
    while (mousemsg())
    {
      msg = getmouse();
      if(msg.is_left()&&msg.is_down())
      {
        musicc();
        game.level++;
        game.targets=game.targets+1600;
        game.state=1;
        game.game_state=1;
        game.level_state=1;
        game.tool_number=game.tool_number+2;
        return ;
      }
    }
    Sleep(500);
  }
}
void play()
{
  while(1)
  {
    if(game.game_state==0)
      start_game();
    else if(game.game_state==1)
      play_game();
    else if(game.game_state==-1)
      end_game();
    else if(game.game_state==2)
      win_game();
    else if(game.game_state==4)
      fail_again();
    else if(game.game_state==5)
      inter_game();
    else if(game.game_state==3)
      return ;
  }
}

int main()
{
  initgraph(450,700);
  game.game_state=0;
  game.counts=0;
  game.score=0;
  game.targets=1500;
  game.level=1;
  game.tool_number=0;
  game.tool_state=1;
  game.start_state=1;
  init_img();
  mciSendString("open game\\under.mp3 alias mymusicg",NULL,0,NULL);
  mciSendString("play mymusicg repeat",NULL,0,NULL);
  read(&high);

  play();

  closegraph();
  mciSendString("close mymusicg repeat",NULL,0,NULL);
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现连连看消除算法

    C++连连看消除代码的实现,过程比较复杂. #include<iostream> #include<vector> using namespace std; bool CheckRemove(int x1,int y1,int x2,int y2,int rows,int cols,int ***pArray); void Swap(int &a,int &b); typedef struct { int x; int y; }point; int main() {

  • C++连连看判定图形消除算法

    我们玩过的连连看游戏,通过选定两个图形相同的元素,判定其是否可在三次转弯内连接起来,若能,则消去,若不能,则不可消去,直至最后全部消除. 本算法中不包括关于死锁状态判定. // 连连看.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream.h> #include <vector> #include <queue

  • C++实现连连看游戏核心代码

    这两天研究了一下连连看游戏的源代码,感觉它挺简单的,主要就是判断选中的两张图片能否消去.我参考了网上的源代码(抱歉的是,不记得当时下载的网址了,在此对原作者表示深深的歉意!),然后自己把核心代码整理如下,与大家共享.需要说明的是,这只是核心算法的代码,界面设计和操作的代码均已略去. #include <stdlib.h> #include <time.h> //图片类 class picture { public: int type;//图片的编号,共有n种,从0到n-1 bool

  • C语言实现宾果消消乐

    本文实例为大家分享了C语言宾果消消乐的具体代码,供大家参考,具体内容如下 ```c #include<graphics.h> #include<stdio.h> #include<windows.h> #include <conio.h> #include<time.h> #include<mmsystem.h> #define MAPSIZE 10 int map[MAPSIZE][MAPSIZE]; int map2[MAPSIZ

  • C语言实现消消乐小游戏

    本文实例为大家分享了C语言实现消消乐小游戏的具体代码,供大家参考,具体内容如下 代码: #include<iostream> #include<cstdlib> #include<bitset> #include<conio.h> #include<time.h> #include <windows.h> #include<queue> #include<algorithm> using namespace s

  • C语言实现消消乐游戏

    本文实例为大家分享了C语言实现消消乐游戏的具体代码,供大家参考,具体内容如下 问题描述 给定一个矩阵, 判断移动哪一个格子,可以实现消除.(定义连续三个即可消除) 据说是华为的笔试题. 分析 先写一个函数,判断包含(i, j)的格子是否可能实现消除. 然后就是向右向下交换,然后调用上面写好的函数判断 被交换的两个格子是否实现消除. 重点是: 1.只需要向右向下交换,因为遍历的时候,后面的交换会重复.前一个判断了向右交换是否消除,后一个遍历就不需要再判断向左交换是否重复了. 2.一定要对被交换的两

  • C++语言实现开心消消乐

    本文实例为大家分享了C++实现开心消消乐的具体代码,供大家参考,具体内容如下 用C++实现的开心消消乐主要分成一个一个模块去实现的,较少代码的耦合性,在这里用了一个xiaoxiaogame类去实现,其中构造函数中对数组和变量的初始化 xiaoxiaogame(int row1, int col1); 用void display();这样一个函数实现显示,用bool isvalid(int x, int y);来判断一个坐标所在的位置能不能消除, 用bool isgameover();判断游戏有没

  • 利用PHP实现开心消消乐的算法示例

    前言 本文主要介绍了关于PHP如何实现我们大家都知道的开心消消乐的算法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.需求描述: 1.在一个8*8的矩阵方格中随机出现5种颜色的色块. 2.当有三个或以上色块在横向或纵向上相连,则消除这些色块. 3.色块消除后,上方色块往下平移,并掉下颜色随机的色块填充矩阵空缺. 4.重复2.3步骤. 5.消除3个相同色块加10分,4个加15分,5个加20分,6个加30分,7个加40分,8个加70分,9个加100分,10个加150分,再往后

  • Android仿开心消消乐大树星星无限循环效果

    啥都不说先上效果图,这个是我项目里的效果: 下面的是我抽取出来的 demo 适配啥的我基本上都做好了没做其他的 ok 下面 说一下思路把 首先 说一下原理 我是使用bitmap 创建两张图 一开始的时候 一张在下面记为1号 一张在上面 记为2号 当手指向下滑动时 判断 1号 的起点位置 是否完全超出屏幕 如果超出屏幕的话 那么将2号变为下面 1号变为上面 (移动1号的Y坐标) 大体思路 是这样. 里面还有许多判断 比如 是否能向下滑动 起点位置, 星星的判定 哎呀 好烦 说的东西太多啦 来张我的

  • Android开心消消乐代码实例详解

    突然想要在android上写一个消消乐的代码,在此之前没有系统地学过java的面向对象,也没有任何android相关知识,不过还是会一点C++.8月初开始搭建环境,在这上面花了相当多的时间,然后看了一些视频和电子书,对android有了一个大概的了解,感觉差不多了的时候就开始写了. 疯狂地查阅各种资料,反反复复了好几天后,也算是写出了个成品.原计划有很多地方还是可以继续写下去的,比如UI设计,比如动画特效,时间设计,关卡设计,以及与数据库的连接,如果可以的话还能写个联网功能,当然因为写到后期内心

  • Vue实现开心消消乐游戏算法

    之前做过一个算法题,算法要求就是写一个开心消消乐的逻辑算法,当时也是考虑了一段时间才做出来.后来想了想,既然核心算法都有了,能不能实现一个开心消消乐的小游戏呢,于是花了两天时间做了一个小游戏出来. 效果展示# 先在这里放一个最终实现的效果,还是一个比较初级的版本,大家有什么想法欢迎评论哦 游戏规则: 初始时会给玩家十分的初始分,每拖动一次就减一分,每消除一个方块就加一分,直到最后分数为0游戏结束 任意两个方块都可以拖动 界面设计# 页面的布局比较简单,格子的数据是一个二维数组的形式,说到这里大家

  • C/C++百行代码实现热门游戏消消乐功能的示例代码

    游戏设计 首先我们需要使用第三方框架,这里我使用的是sfml,不会使用sfml在我的上几篇文章当中-扫雷(上)有详细的开发环境搭建介绍 首先准备图片资源 一张背景图片,一张宝石图片 窗口初始化加载图片 Texture t1; t1.loadFromFile("images/bg2.png"); 当鼠标第一次单击时,记录下位置,第二次单击又记录一下位置,如果两个小方块相邻就交换位置,如果不相邻如图c的位置则,不发生变化 判断行或列如果三张一样的图片相邻,清除一下图片,进行刷新 实列 #i

  • JavaScript实现消消乐的源代码

    JavaScript实现消消乐的源码下载地址:点击下载源代码 index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0,

随机推荐