zoukankan      html  css  js  c++  java
  • 第二个小项目 拼图

    该项目使用的是 graphics.h  图形库,跟openGL等图形库相比要简单的多。

    另外程序还不是非常完善,只是最简陋的版本,先发出来,后面会优化。

    废话不多说,直接上代码。

      1 //拼图
      2 
      3 #include <graphics.h>
      4 #include <conio.h>
      5 #include <stdio.h>
      6 
      7 int a[3][3]={1,3,2,8,7,4,6,5,9};
      8 char name[6];
      9 IMAGE img;
     10 void ShowPicture()
     11 {
     12     for(int i=0;i<3;i++){
     13         for(int j=0;j<3;j++){
     14             sprintf(name,"%d.bmp",a[j][i]);
     15             getimage(&img,name);
     16             putimage(i*100,j*100,&img);
     17         }
     18     }
     19 }
     20 
     21 void PlayGame()
     22 {
     23     int i,j;
     24     bool f;
     25     while(1){
     26         //先检测是否符合正确答案
     27         f=true;
     28         for(i=0;i<3;i++){
     29             for(j=0;j<3;j++)
     30                 if(a[i][j]!=i*3+j+1){
     31                     f=false;
     32                     break;
     33                 }
     34             if(f==false)
     35                 break;
     36         }
     37         if(f==true){
     38             getimage(&img,"end.bmp");    //通关界面
     39             putimage(0,0,&img);
     40         }
     41         //如果不符合正确答案,继续执行
     42         switch(getch()){
     43         case 'w':
     44             //检测9拼图的位置
     45             for(i=0;i<3;i++){
     46                 for(j=0;j<3;j++)
     47                     if(a[i][j]==9)
     48                         break;
     49                 if(a[i][j]==9)
     50                     break;
     51             }
     52             if(1<=a[i+1][j] && a[i+1][j]<=8){
     53                 int t;
     54                 t=a[i+1][j];
     55                 a[i+1][j]=a[i][j];
     56                 a[i][j]=t;
     57             }
     58             cleardevice();
     59             ShowPicture();
     60             break;
     61         case 's':
     62             //检测9拼图的位置
     63             for(i=0;i<3;i++){
     64                 for(j=0;j<3;j++)
     65                     if(a[i][j]==9)
     66                         break;
     67                 if(a[i][j]==9)
     68                     break;
     69             }
     70             if(1<=a[i-1][j] && a[i-1][j]<=8){
     71                 int t;
     72                 t=a[i-1][j];
     73                 a[i-1][j]=a[i][j];
     74                 a[i][j]=t;
     75             }
     76             cleardevice();
     77             ShowPicture();
     78             break;
     79         case 'a':
     80             //检测9拼图的位置
     81             for(i=0;i<3;i++){
     82                 for(j=0;j<3;j++)
     83                     if(a[i][j]==9)
     84                         break;
     85                 if(a[i][j]==9)
     86                     break;
     87             }
     88             if(1<=a[i][j+1] && a[i][j+1]<=8){
     89                 int t;
     90                 t=a[i][j+1];
     91                 a[i][j+1]=a[i][j];
     92                 a[i][j]=t;
     93             }
     94             cleardevice();
     95             ShowPicture();
     96             break;
     97         case 'd':
     98             //检测9拼图的位置
     99             for(i=0;i<3;i++){
    100                 for(j=0;j<3;j++)
    101                     if(a[i][j]==9)
    102                         break;
    103                     if(a[i][j]==9)
    104                         break;
    105             }
    106             if(1<=a[i][j-1] && a[i][j-1]<=8){
    107                 int t;
    108                 t=a[i][j-1];
    109                 a[i][j-1]=a[i][j];
    110                 a[i][j]=t;
    111             }
    112             cleardevice();
    113             ShowPicture();
    114             break;
    115         }
    116     }
    117 }
    118 void main()
    119 {
    120     initgraph(300,300);
    121     ShowPicture();
    122     PlayGame();
    123     getch();
    124 }

    资源:

    http://pan.baidu.com/share/link?shareid=661984&uk=1779322541

    ====================================华丽的分割线============================================

    第一次改进:

    加入了第二关,修改了第一关移动方格存在的BUG。

    后来想加入音乐,发现加不上,有错误,遂放弃了这个想法。

    上代码:

      1 //拼图2
      2 
      3 #include <graphics.h>
      4 #include <conio.h>
      5 #include <stdio.h>
      6 
      7 
      8 int a[3][3]={1,2,3,4,5,6,7,9,8};
      9 int b[3][3]={1,2,3,4,5,6,7,9,8};
     10 char name[6];
     11 IMAGE img;
     12 void ShowPicture()
     13 {
     14     
     15     for(int i=0;i<3;i++){
     16         for(int j=0;j<3;j++){
     17             sprintf(name,"%d.bmp",a[i][j]);
     18             getimage(&img,name);
     19             putimage(j*100,i*100,&img);
     20         }
     21     }
     22 }
     23 void ShowPicture2()
     24 {
     25     for(int i=0;i<3;i++){
     26         for(int j=0;j<3;j++){
     27             sprintf(name,"2_%d.bmp",b[i][j]);
     28             getimage(&img,name);
     29             putimage(j*100,i*100,&img);
     30         }
     31     }
     32 }
     33 void PlayGame()
     34 {
     35     
     36     void PlayGame2(void );
     37     int i,j;
     38     bool f;
     39     while(1){
     40         //先检测是否符合正确答案
     41         f=true;
     42         for(i=0;i<3;i++){
     43             for(j=0;j<3;j++)
     44                 if(a[i][j]!=i*3+j+1){
     45                     f=false;
     46                     break;
     47                 }
     48             if(f==false)
     49                 break;
     50         }
     51         if(f==true){
     52             getimage(&img,"end1.bmp");    //通关界面
     53             putimage(0,0,&img);
     54             getch();
     55             PlayGame2();        //进入第二关
     56             break;
     57         }
     58         //如果不符合正确答案,继续执行
     59         switch(getch()){
     60         case 'w':
     61             //检测9拼图的位置
     62             for(i=0;i<3;i++){
     63                 for(j=0;j<3;j++)
     64                     if(a[i][j]==9)
     65                         break;
     66                 if(j==3) continue;
     67                 if(a[i][j]==9)
     68                     break;
     69             }
     70             if(i+1>2) break;
     71             else{
     72                 int t;
     73                 t=a[i+1][j];
     74                 a[i+1][j]=a[i][j];
     75                 a[i][j]=t;
     76             }
     77             cleardevice();
     78             ShowPicture();
     79             break;
     80         case 's':
     81             //检测9拼图的位置
     82             for(i=0;i<3;i++){
     83                 for(j=0;j<3;j++)
     84                     if(a[i][j]==9)
     85                         break;
     86                 if(j==3) continue;
     87                 if(a[i][j]==9)
     88                     break;
     89             }
     90             if(i-1<0) break;
     91             else{
     92                 int t;
     93                 t=a[i-1][j];
     94                 a[i-1][j]=a[i][j];
     95                 a[i][j]=t;
     96             }
     97             cleardevice();
     98             ShowPicture();
     99             break;
    100         case 'a':
    101             //检测9拼图的位置
    102             for(i=0;i<3;i++){
    103                 for(j=0;j<3;j++)
    104                     if(a[i][j]==9)
    105                         break;
    106                 if(j==3) continue;
    107                 if(a[i][j]==9)
    108                     break;
    109             }
    110             if(j+1>2) break;
    111             else{
    112                 int t;
    113                 t=a[i][j+1];
    114                 a[i][j+1]=a[i][j];
    115                 a[i][j]=t;
    116             }
    117             cleardevice();
    118             ShowPicture();
    119             break;
    120         case 'd':
    121             //检测9拼图的位置
    122             for(i=0;i<3;i++){
    123                 for(j=0;j<3;j++)
    124                     if(a[i][j]==9)
    125                         break;
    126                 if(j==3) continue;
    127                 if(a[i][j]==9)
    128                     break;
    129             }
    130             if(j-1<0) break;
    131             else{
    132                 int t;
    133                 t=a[i][j-1];
    134                 a[i][j-1]=a[i][j];
    135                 a[i][j]=t;
    136             }
    137             cleardevice();
    138             ShowPicture();
    139             break;
    140         }
    141     }
    142 }
    143 
    144 void PlayGame2()
    145 {
    146     int i,j;
    147     bool f;
    148     while(1){
    149         //先检测是否符合正确答案
    150         f=true;
    151         for(i=0;i<3;i++){
    152             for(j=0;j<3;j++)
    153                 if(b[i][j]!=i*3+j+1){
    154                     f=false;
    155                     break;
    156                 }
    157             if(f==false)
    158                 break;
    159         }
    160         if(f==true){
    161             getimage(&img,"end2.bmp");    //通关界面
    162             putimage(0,0,&img);
    163             break;
    164         }
    165         //如果不符合正确答案,继续执行
    166         switch(getch()){
    167         case 'w':
    168             //检测9拼图的位置
    169             for(i=0;i<3;i++){
    170                 for(j=0;j<3;j++)
    171                     if(b[i][j]==9)
    172                         break;
    173                 if(j==3) continue;
    174                 if(b[i][j]==9)
    175                     break;
    176             }
    177             if(i+1>2) break;
    178             else{
    179                 int t;
    180                 t=b[i+1][j];
    181                 b[i+1][j]=b[i][j];
    182                 b[i][j]=t;
    183             }
    184             cleardevice();
    185             ShowPicture2();
    186             break;
    187         case 's':
    188             //检测9拼图的位置
    189             for(i=0;i<3;i++){
    190                 for(j=0;j<3;j++)
    191                     if(b[i][j]==9)
    192                         break;
    193                 if(j==3) continue;
    194                 if(b[i][j]==9)
    195                     break;
    196             }
    197             if(i-1<0) break;
    198             else{
    199                 int t;
    200                 t=b[i-1][j];
    201                 b[i-1][j]=b[i][j];
    202                 b[i][j]=t;
    203             }
    204             cleardevice();
    205             ShowPicture2();
    206             break;
    207         case 'a':
    208             //检测9拼图的位置
    209             for(i=0;i<3;i++){
    210                 for(j=0;j<3;j++)
    211                     if(b[i][j]==9)
    212                         break;
    213                 if(j==3) continue;
    214                 if(b[i][j]==9)
    215                     break;
    216             }
    217             if(j+1>2) break;
    218             else{
    219                 int t;
    220                 t=b[i][j+1];
    221                 b[i][j+1]=b[i][j];
    222                 b[i][j]=t;
    223             }
    224             cleardevice();
    225             ShowPicture2();
    226             break;
    227         case 'd':
    228             //检测9拼图的位置
    229             for(i=0;i<3;i++){
    230                 for(j=0;j<3;j++)
    231                     if(b[i][j]==9)
    232                         break;
    233                 if(j==3) continue;
    234                 if(b[i][j]==9)
    235                     break;
    236             }
    237             if(j-1<0) break;
    238             else{
    239                 int t;
    240                 t=b[i][j-1];
    241                 b[i][j-1]=b[i][j];
    242                 b[i][j]=t;
    243             }
    244             cleardevice();
    245             ShowPicture2();
    246             break;
    247         }
    248     }
    249 }
    250 void main()
    251 {
    252     initgraph(300,300);
    253     ShowPicture();
    254     PlayGame();
    255     getch();
    256 }

    资源:

    http://pan.baidu.com/share/link?shareid=668630&uk=1779322541 

  • 相关阅读:
    Java程序员必知的8大排序
    Servlet与JSP间的传值问题
    Servlet上传文件详细解析以及注意事项
    JSP入门学习经验
    统计语言模型(Statistical Language Models)(条件概率公式)
    自定义用户控件ascx
    asp.net相对路径、绝对路径
    A list of supported CSS selectors when invoking g(..)
    一位研究生导师心目中理想的论文(转)
    常用软件
  • 原文地址:https://www.cnblogs.com/yym2013/p/3079924.html
Copyright © 2011-2022 走看看