亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用easyx圖形庫實現推箱子游戲的方法

發布時間:2020-07-01 09:57:43 來源:億速云 閱讀:211 作者:清晨 欄目:開發技術

小編給大家分享一下用easyx圖形庫實現推箱子游戲的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!

#include<stdio.h>
#include<stdlib.h>
//#include<Windows.h>
#include<conio.h>
#include<graphics.h>
#include<stdbool.h>
 
//播放音樂需要的頭文件
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
 
//格子邊長
#define SPACE 60
 
//6.3.1 定義變量
IMAGE png[12];//5張圖,定義5個變量,定義一個數組
 
#define MapMany 6
 
//枚舉方向
enum CH {
  right = 1,
  left = 2,
  up = 3,
  down = 4
}ch;
 
//定義一個全局三維數組
 
//0表示空地“ ”    1表示墻“■”    2代表目的地“⊙”    3代表人站在空地上“♀”    4代表箱子“□”
//5箱子與目的地重合“◆”    6,人站在目的地上“♀”
 
//下面定義地圖
int map[MapMany][10][10] = {
  //圖一
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 2, 0, 1, 1, 0, 0, 0, 2, 1 },
    { 1, 0, 0, 1, 1, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 1, 0, 4, 1 },
    { 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 },
    { 1, 4, 0, 0, 0, 0, 0, 3, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //圖二
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 1, 2, 0, 0, 0, 4, 0, 1 },
    { 1, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
    { 1, 0, 1, 1, 1, 1, 1, 0, 3, 1 },
    { 1, 0, 1, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 2, 0, 0, 4, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //圖三
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 2, 0, 1, 0, 0, 3, 0, 0, 1 },
    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 4, 0, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 0, 0, 0, 4, 1 },
    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 4, 0, 1, 0, 0, 1 },
    { 1, 2, 0, 0, 0, 0, 1, 0, 2, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //圖四
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //圖五
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //圖六
  {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  }
};
 
//定義當前關卡
int WhatMap = 0;//初始化位第0張地圖
 
void DrawMap(int n);
void initscreen();
void ManUp();
int KbHit();
void ManUp();
void ManRight();
void ManLeft();
void ManDown();
int GameOver();
void drawGame();

CPP文件:

#include"SokoBan.h"
 
int main()
{
  initscreen();
  //播放音樂
  mciSendString(TEXT("open sun.mp3 alias mysong"), NULL, 0, NULL);
  mciSendString(TEXT("play mySong"), NULL, 0, NULL);
 
  while (1)
  {
    switch (KbHit())
    {
    case 4:ManUp(); break;
    case 2:ManLeft(); break;
    case 1:ManRight(); break;
    case 3:ManDown(); break;
    //case 0:continue;
    }
    drawGame();
    if (GameOver())
    {
      WhatMap++;
      Sleep(1000);
    }
    if (WhatMap == 3)break;
  }
  loadimage(&png[7], _T("6.jpg"), 10*SPACE, 10*SPACE, true);
  putimage(0, 0, &png[7]);
  Sleep(10000);
  return 0;
  //printf("作者:小豆芽\n時間:2018/12/18\n版權:2862841130@qq.com");
  //system("pause");
}
 
//設置窗口大小
void initscreen()
{
  initgraph(10 * SPACE, 10 * SPACE );
 
  //6.3.2 加載圖片
 
  //0表示空地“ ”    1表示墻“■”    2代表目的地“⊙”    3代表人站在空地上“♀”    4代表箱子“□”
  //5箱子與目的地重合“◆”    6,人站在目的地上“♀”
  loadimage(&png[0], _T("0.jpg"), SPACE, SPACE, true);
  loadimage(&png[1], _T("1.jpg"), SPACE, SPACE, true);
  loadimage(&png[2], _T("2.jpg"), SPACE, SPACE, true);
  loadimage(&png[3], _T("3.jpg"), SPACE, SPACE, true);
  loadimage(&png[4], _T("4.jpg"), SPACE, SPACE, true);
  loadimage(&png[5], _T("5.jpg"), SPACE, SPACE, true);
  loadimage(&png[6], _T("3.jpg"), SPACE, SPACE, true);
  
 
  //以下是windows窗口
  //system("mode con cols=20 lines=10");    //cols 代表列  //lines  代表行
  //                      //設置標題
  //SetConsoleTitleA("推箱子");        //設置標題
}
//貼圖
void drawGame() {
  for (int i = 0; i < 10; i++) {//顯示一行
    for (int j = 0; j < 10; j++) {//顯示一個格子
      putimage(j*SPACE, i*SPACE, &png[map[WhatMap][i][j]]);
    }
  }
}
 
//畫出地圖
 
//0表示空地“ ”    1表示墻“■”    2代表目的地“⊙”    3代表人“♀”    4代表箱子“□”
//5箱子與目的地重合“◆”    6,人站在目的地
void DrawMap(int n)
{
  system("cls");
  for (int j = 0; j < 10; j++)
  {
    int i;
    for (i = 0; i < 10; i++)
    {
      if (map[WhatMap][i][j] == 0)printf(" ");
      if (map[WhatMap][i][j] == 1)printf("■");
      if (map[WhatMap][i][j] == 2)printf("⊙");
      if (map[WhatMap][i][j] == 3)printf("♀");
      if (map[WhatMap][i][j] == 4)printf("□");
      if (map[WhatMap][i][j] == 5)printf("◆");
      if (map[WhatMap][i][j] == 6)printf("♀");
    }
    if(i<9)printf("\n");
  }
}
 
//判斷按鍵操作
int KbHit()
{
  if (GetAsyncKeyState(VK_UP)&1)return up;
  else if (GetAsyncKeyState(VK_DOWN)&1)return down;
  else if (GetAsyncKeyState(VK_RIGHT)&1)return right;
  else if (GetAsyncKeyState(VK_LEFT)&1)return left;
  else return 0;
}
 
//********************************************人向上移動
void ManUp()
{
  //先找到人的位置
  int i, j;
  for (i = 0; i < 10; i++)
  {
    int flag = 0;
    for (j = 0; j < 10; j++)
      if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
      {
        flag = 1;
        break;
      }
    if (flag)break;
  }
  //人的位置是map[WhatMap][i][j];
 
  //改變人的方向
 
  //人的位置是空地
  if (map[WhatMap][i][j] == 3)
  {
    //***********人的上面是空地
    if (map[WhatMap][i + 1][j] == 0)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i + 1][j] = 3;
    }
    //************人的上面是目的地
    else if (map[WhatMap][i + 1][j] == 2)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i + 1][j] = 6;
    }
    //*************人的上面是箱子
    else if (map[WhatMap][i + 1][j] == 4)
    {
      //1,***********箱子上面是目的地
      if (map[WhatMap][i + 2][j] == 2)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i + 1][j] = 3;
        map[WhatMap][i + 2][j] = 5;
      }
      //2,************箱子上面是空地
      else if (map[WhatMap][i + 2][j] == 0)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i + 1][j] = 3;
        map[WhatMap][i + 2][j] = 4;
      }
      //3,*************箱子上面是。。。。。
    }
 
  }
  //人的位置是目的地
  else if (map[WhatMap][i][j] == 6)
  {
 
    //***********人的上面是空地
 
    if (map[WhatMap][i + 1][j] == 0)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i + 1][j] = 3;
    }
    //************人的上面是目的地
    else if (map[WhatMap][i + 1][j] == 2)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i + 1][j] = 6;
    }
    //*************人的上面是箱子
 
    else if (map[WhatMap][i + 1][j] == 4)
    {
      //1,***********箱子上面是目的地
      if (map[WhatMap][i + 2][j] == 2)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i + 1][j] = 3;
        map[WhatMap][i + 2][j] = 5;
      }
      //2,************箱子上面是空地
      else if (map[WhatMap][i + 2][j] == 0)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i + 1][j] = 3;
        map[WhatMap][i + 2][j] = 4;
      }
      //3,*************箱子上面是。。。。。
    }
  }
}
//********************************************人向右移動
void ManRight()
{
  //先找到人的位置
  int i, j;
  for (i = 0; i < 10; i++)
  {
    int flag = 0;
    for (j = 0; j < 10; j++)
      if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
      {
        flag = 1;
        break;
      }
    if (flag)break;
  }
  //人的位置是map[WhatMap][i][j];
 
  //改變人的方向
 
  //人的位置是空地
  if (map[WhatMap][i][j] == 3)
  {
    //***********人的右面是空地
    if (map[WhatMap][i][j+1] == 0)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i][j+1] = 3;
    }
    //************人的右面是目的地
    else if (map[WhatMap][i][j+1] == 2)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i][j+1] = 6;
    }
    //*************人的右面是箱子
    else if (map[WhatMap][i][j+1] == 4)
    {
      //1,***********箱子右面是目的地
      if (map[WhatMap][i][j+2] == 2)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i][j+1] = 3;
        map[WhatMap][i][j+2] = 5;
      }
      //2,************箱子右面是空地
      else if (map[WhatMap][i][j+2] == 0)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i][j+1] = 3;
        map[WhatMap][i][j+2] = 4;
      }
      //3,*************箱子右面是。。。。。
    }
  }
  //人的位置是目的地
  else if (map[WhatMap][i][j] == 6)
  {
    //***********人的右面是空地
 
    if (map[WhatMap][i][j+1] == 0)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i][j+1] = 3;
    }
    //************人的右面是目的地
    else if (map[WhatMap][i][j+1] == 2)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i][j+1] = 6;
    }
    //*************人的右面是箱子
 
    else if (map[WhatMap][i][j+1] == 4)
    {
      //1,***********箱子右面是目的地
      if (map[WhatMap][i][j+2] == 2)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i][j+1] = 3;
        map[WhatMap][i][j+2] = 5;
      }
      //2,************箱子右面是空地
      else if (map[WhatMap][i][j+2] == 0)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i][j+1] = 3;
        map[WhatMap][i][j+2] = 4;
      }
      //3,*************箱子右面是。。。。。
    }
  }
}
//********************************************人向左移動
void ManLeft()
{
  //先找到人的位置
  int i, j;
  for (i = 0; i < 10; i++)
  {
    int flag = 0;
    for (j = 0; j < 10; j++)
      if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
      {
        flag = 1;
        break;
      }
    if (flag)break;
  }
  //人的位置是map[WhatMap][i][j];
 
  //改變人的方向
 
  //人的位置是空地
  if (map[WhatMap][i][j] == 3)
  {
    //***********人的左面是空地
    if (map[WhatMap][i][j-1] == 0)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i][j-1] = 3;
    }
    //************人的左面是目的地
    else if (map[WhatMap][i][j-1] == 2)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i][j-1] = 6;
    }
    //*************人的左面是箱子
    else if (map[WhatMap][i][j-1] == 4)
    {
      //1,***********箱子左面是目的地
      if (map[WhatMap][i][j-2] == 2)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i][j-1] = 3;
        map[WhatMap][i][j-2] = 5;
      }
      //2,************箱子左面是空地
      else if (map[WhatMap][i][j-2] == 0)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i][j-1] = 3;
        map[WhatMap][i][j-2] = 4;
      }
      //3,*************箱子左面是。。。。。
    }
  }
  //人的位置是目的地
  else if (map[WhatMap][i][j] == 6)
  {
    //***********人的上面是空地
 
    if (map[WhatMap][i][j-1] == 0)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i][j-1] = 3;
    }
    //************人的上面是目的地
    else if (map[WhatMap][i][j-1] == 2)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i][j-1] = 6;
    }
    //*************人的上面是箱子
 
    else if (map[WhatMap][i][j-1] == 4)
    {
      //1,***********箱子上面是目的地
      if (map[WhatMap][i][j-2] == 2)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i][j-1] = 3;
        map[WhatMap][i][j-2] = 5;
      }
      //2,************箱子上面是空地
      else if (map[WhatMap][i][j-2] == 0)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i][j-1] = 3;
        map[WhatMap][i][j-2] = 4;
      }
      //3,*************箱子上面是。。。。。
    }
  }
}
//********************************************人向下移動
void ManDown()
{
  //先找到人的位置
  int i, j;
  for (i = 0; i < 10; i++)
  {
    int flag = 0;
    for (j = 0; j < 10; j++)
      if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
      {
        flag = 1;
        break;
      }
    if (flag)break;
  }
  //人的位置是map[WhatMap][i][j];
 
  //改變人的方向
 
  //人的位置是空地
  if (map[WhatMap][i][j] == 3)
  {
    //***********人的下面是空地
    if (map[WhatMap][i - 1][j] == 0)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i - 1][j] = 3;
    }
    //************人的上面是目的地
    else if (map[WhatMap][i - 1][j] == 2)
    {
      map[WhatMap][i][j] = 0;
      map[WhatMap][i - 1][j] = 6;
    }
    //*************人的上面是箱子
    else if (map[WhatMap][i - 1][j] == 4)
    {
      //1,***********箱子上面是目的地
      if (map[WhatMap][i - 2][j] == 2)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i - 1][j] = 3;
        map[WhatMap][i - 2][j] = 5;
      }
      //2,************箱子上面是空地
      else if (map[WhatMap][i - 2][j] == 0)
      {
        map[WhatMap][i][j] = 0;
        map[WhatMap][i - 1][j] = 3;
        map[WhatMap][i - 2][j] = 4;
      }
      //3,*************箱子上面是。。。。。
    }
  }
  //人的位置是目的地
  else if (map[WhatMap][i][j] == 6)
  {
    //***********人的上面是空地
 
    if (map[WhatMap][i - 1][j] == 0)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i - 1][j] = 3;
    }
    //************人的上面是目的地
    else if (map[WhatMap][i - 1][j] == 2)
    {
      map[WhatMap][i][j] = 2;
      map[WhatMap][i - 1][j] = 6;
    }
    //*************人的上面是箱子
 
    else if (map[WhatMap][i - 1][j] == 4)
    {
      //1,***********箱子上面是目的地
      if (map[WhatMap][i - 2][j] == 2)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i - 1][j] = 3;
        map[WhatMap][i - 2][j] = 5;
      }
      //2,************箱子上面是空地
      else if (map[WhatMap][i - 2][j] == 0)
      {
        map[WhatMap][i][j] = 2;
        map[WhatMap][i - 1][j] = 3;
        map[WhatMap][i - 2][j] = 4;
      }
      //3,*************箱子上面是。。。。。
    }
  }
}
 
 
//判斷游戲是否結束
int GameOver()
{
  //統計目的地的個數
  int flag = 0;
  for (int i = 0; i < 10; i++)
  {
    for (int j = 0; j < 10; j++)
    {
      if (map[WhatMap][i][j] == 2)flag++;
    }
  }
 
  //箱子到達目的地的個數
  int count = 0;
  for (int i = 0; i < 10; i++)
  {
    for (int j = 0; j < 10; j++)
    {
      if (map[WhatMap][i][j] == 4)count++;
    }
  }
  if (count == 0&&flag == 0 )return 1;
  else return 0;
}

運行效果:

用easyx圖形庫實現推箱子游戲的方法

游戲資源:

1.

用easyx圖形庫實現推箱子游戲的方法

2.

用easyx圖形庫實現推箱子游戲的方法

3.

用easyx圖形庫實現推箱子游戲的方法

4.

用easyx圖形庫實現推箱子游戲的方法

5.

用easyx圖形庫實現推箱子游戲的方法

6.

用easyx圖形庫實現推箱子游戲的方法

結束展示:

用easyx圖形庫實現推箱子游戲的方法

看完了這篇文章,相信你對用easyx圖形庫實現推箱子游戲的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海丰县| 锦州市| 玛沁县| 龙江县| 正镶白旗| 黔东| 韶关市| 井陉县| 新龙县| 抚顺县| 天全县| 博乐市| 广灵县| 偃师市| 县级市| 龙游县| 泰和县| 贵州省| 康马县| 福海县| 密山市| 慈溪市| 丹东市| 肃北| 榆林市| 新竹县| 白水县| 阳山县| 恩施市| 台湾省| 资源县| 肥乡县| 昭平县| 辽宁省| 宾阳县| 乌拉特后旗| 衢州市| 江口县| 九龙城区| 延寿县| 册亨县|