最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言編寫簡單拼圖游戲

 更新時間:2020年03月16日 09:48:25   作者:凸凸凸凸凸凸凸凸凸凸  
這篇文章主要為大家詳細介紹了C語言編寫簡單拼圖游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了使用C語言編寫一個簡單的拼圖游戲,供大家參考,具體內容如下

制作一款拼圖小游戲

#include <graphics.h> // 引用圖形庫頭文件
#include <conio.h>
#include<stdio.h>

typedef enum { UP, DOWN, LEFT, RIGHT, UNKOWN } DRCT;

const int level = 5;

DRCT getKey()
{
 char key;
 DRCT ret;
 key = _getch();

 switch (key)
 {
 case 'a':
 case 'A':
 ret = LEFT;
 break;
 case 's':
 case 'S':
 ret = DOWN;
 break;
 case 'd':
 case 'D':
 ret = RIGHT;
 break;
 case 'w':
 case 'W':
 ret = UP;
 break;
 default:
 ret = UNKOWN;
 break;

 }

 return ret;
}

void drawImage(int layout[level][level], IMAGE* pimg)
{
 int w, h;
 w = h = pimg->getwidth() / level;

 int x1, y1, x2, y2;

 setcolor(RGB(255, 255, 255));
 setfillcolor(RGB(0, 0, 0));

 for (int i = 0; i < level; ++i)
 {
 for (int j = 0; j < level; ++j)
 {
 x1 = j * w;
 y1 = i * h;

 if (layout[i][j] != -1)
 {
 x2 = layout[i][j] % level * w;
 y2 = layout[i][j] / level * h;
 putimage(x1, y1, w, h, pimg, x2, y2);
 }
 else
 {
 fillrectangle(x1, y1, x1 + w, y1 + h);
 }
 }
 }

 for (int i = 1; i < level; ++i)
 {
 line(0, i*h, pimg->getwidth(), i*h);
 }

 for (int i = 1; i < level; ++i)
 {
 line(i*w, 0, i*w, pimg->getheight());
 }
}

int isGameOver(int layout[level][level])
{
 for (int i = 0; i < level; i++)
 {
 for (int j = 0; j < level; j++)
 {
 if (!(i == level - 1 && j == level - 1))
 {
 if (layout[i][j] != i*level + j)
 {
 return 0;
 } 
 }
 }
 }

 return 1;
}
int updateLayout(int layout[level][level], DRCT d)
{
 int x = 0, t = 0;


 int row, col, i, j, a, b;
 for (i = 0; i < level; i++)//先找黑框坐標 i,j
 {
 for (j = 0; j < level; j++)
 {
 if (layout[i][j] == -1)
 {
 a = i;
 b = j;
 }
 }
 }
 switch (d)
 {
 case UP: { row = a + 1; col = b; break; }
 case DOWN: { row = a - 1; col = b; break; }
 case LEFT: { row = a; col = b + 1; break; }
 case RIGHT: { row = a; col = b - 1; break; }
 default: {row = a, col = b; break; }
 }
 //根據(jù)d的值算出與(i,j)交換的方塊的坐標(row,col)
 if (row<0 || row>level - 1 || col<0 || col>level - 1)
 {
 x = 0;
 }
 else
 {
 x = 1;
 t = layout[a][b];
 layout[a][b] = layout[row][col];
 layout[row][col] = t;
 }
 //坐標(row,col)合法:交換 并且ret=1 
 //  否則: ret=0
 return x;
}

int main()
{
 int layout[level][level] =
 {
 0,1,2,3,4,
 5,6,7,8,9,
 10,11,12,13,14,
 15,16,17,18,19,
 20,21,-1,22,23
 };


 initgraph(850, 500); // 創(chuàng)建繪圖窗口,大小為 640x480 像素

 IMAGE img,imgTip;
 loadimage(&img, _T("./image/0.jpg")); //圖片為自己定義的路徑
 loadimage(&imgTip, _T("./image/0.jpg"),200,200);
 drawImage(layout, &img);
 putimage(650, 0, &imgTip);

 while (!isGameOver(layout))
 {
 DRCT d = getKey();

 //根據(jù)d的值修改layout數(shù)組中的數(shù)據(jù)
 if (updateLayout(layout, d))
 drawImage(layout, &img);
 }
 putimage(0, 0, &img);
 outtextxy(100, 50, _T(""));

 _getch();
 closegraph(); // 關閉繪圖窗口
}

效果如下

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺談do {...} while (0) 在宏定義中的作用

    淺談do {...} while (0) 在宏定義中的作用

    下面小編就為大家?guī)硪黄獪\談do {...} while (0) 在宏定義中的作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 用C語言實現(xiàn)三子棋

    用C語言實現(xiàn)三子棋

    這篇文章主要為大家詳細介紹了用C語言實現(xiàn)三子棋,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言實現(xiàn)簡易的掃雷游戲

    C語言實現(xiàn)簡易的掃雷游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易的掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++淺析類與對象的基礎

    C++淺析類與對象的基礎

    類和對象是兩種以計算機為載體的計算機語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲在內存中—個可以擁有在某個范圍內的可變存儲區(qū)域
    2022-05-05
  • C++中策略模式和工廠模式的區(qū)別

    C++中策略模式和工廠模式的區(qū)別

    這篇文章介紹了C++中策略模式和工廠模式的區(qū)別,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧
    2018-10-10
  • C++判斷一個點是否在圓內的方法

    C++判斷一個點是否在圓內的方法

    這篇文章主要為大家詳細介紹了C++判斷一個點是否在圓內的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語言實現(xiàn)冒泡排序的思路以及過程

    C語言實現(xiàn)冒泡排序的思路以及過程

    冒泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值
    2021-09-09
  • 詳解C語言學習記錄之指針

    詳解C語言學習記錄之指針

    關于指針,其是C語言的重點,C語言學的好壞,其實就是指針學的好壞。其實指針并不復雜,學習指針,要正確的理解指針,本片文章能給就來學習一下
    2021-11-11
  • 淺析C語言中堆和棧的區(qū)別

    淺析C語言中堆和棧的區(qū)別

    堆和棧都是一種數(shù)據(jù)項按序排列的數(shù)據(jù)結構。在C語言中是非常重要的知識點,接下來通過本文給大家介紹C語言中堆和棧的區(qū)別,感興趣的朋友一起看下吧
    2016-06-06

最新評論

河池市| 北宁市| 皮山县| 潢川县| 萨迦县| 屯门区| 邵阳市| 理塘县| 上栗县| 玛曲县| 昌宁县| 安丘市| 巴彦淖尔市| 旅游| 康定县| 临安市| 宜宾县| 海林市| 孟连| 弋阳县| 遂溪县| 乌什县| 松潘县| 贵南县| 无棣县| 凉山| 佛冈县| 山东| 肇州县| 信丰县| 开封市| 阳原县| 中阳县| 梅河口市| 禹城市| 晋宁县| 舒兰市| 闸北区| 深泽县| 伊通| 普格县|