您的位置广东网盟 > 文章资讯 > 软件应用 > 编程开发 > C语言技术 > 文章内容

C语言--自制-拼图游戏2

作者:佚名  来源:本站整理  发布时间:2008-9-21 19:29:46

            case 6:
                      case 11:
                      case 16:
                          if(point[block_num+5].num==25)
                          {
                              Change_Block(block_num,block_num+5);
                              n++;
                          }
                          else if(point[block_num+1].num==25)
                          {
                              Change_Block(block_num,block_num+1);
                              n++;
                          }
                          else if(point[block_num-5].num==25)
                          {
                              Change_Block(block_num,block_num-5);
                              n++;
                          }
                          break;
                      case 10:
                      case 15:
                      case 20:
                          if(point[block_num-1].num==25)
                          {
                              Change_Block(block_num,block_num-1);
                              n++;
                          }
                          else if(point[block_num+5].num==25)
                          {
                              Change_Block(block_num,block_num+5);
                              n++;
                          }
                          else if(point[block_num-5].num==25)
                          {
                              Change_Block(block_num,block_num-5);
                              n++;
                          }
                          break;
                      case 22:
                      case 23:
                      case 24:
                          if(point[block_num-1].num==25)
                          {
                              Change_Block(block_num,block_num-1);
                              n++;
                          }
                          else if(point[block_num+1].num==25)
                          {
                              Change_Block(block_num,block_num+1);
                              n++;
                          }
                          else if(point[block_num-5].num==25)
                          {
                              Change_Block(block_num,block_num-5);
                              n++;
                          }
                          break;
                      default:
                          if(point[block_num-1].num==25)
                          {
                              Change_Block(block_num,block_num-1);
                              n++;
                          }
                          else if(point[block_num+5].num==25)
                          {
                              Change_Block(block_num,block_num+5);
                              n++;
                          }
                          else if(point[block_num+1].num==25)
                          {
                              Change_Block(block_num,block_num+1);
                              n++;
                          }
                          else if(point[block_num-5].num==25)
                          {
                              Change_Block(block_num,block_num-5);
                              n++;
                          }
                }
            }
            break;
        default:;
        }
        MyPaint();
        break;
    case WM_CLOSE:
        if(IDYES==MessageBox(hWnd,"真的不玩了?","提示",MB_YESNO))
        {
            DestroyWindow(hWnd);
        }
        break;
    case WM_DESTROY:
        int k;
        for(k=0;k<7;k++)
        {
            DeleteObject(pict[k]);
            DeleteObject(compare_pict[k]);
        }
        DeleteObject(compare_pic);
        DeleteObject(pic);
        DeleteObject(empty);
        ReleaseDC(hWnd,hdc);
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}



void MyPaint()
{
    SelectObject(mdc,empty);                         //贴上背景图
    BitBlt(hdc,600,0,487,526,mdc,200,0,SRCCOPY);
    SelectObject(mdc,compare_pic);                   //贴上参照图
    BitBlt(hdc,617,0,450,360,mdc,0,0,SRCCOPY);
    sprintf(str,"%d",n);                             //显示移动步数
    TextOut(hdc,817,433,str,strlen(str));
    if(3==line)
    {
        sprintf(str,"%d",high3);                    //在其位置显示最高记录
        TextOut(hdc,1007,433,str,strlen(str));
        if(new3)                //如果要重排
        {
            GetPos();            //重排
            new3=false;
        }
        SelectObject(mdc,pic);
        for(int i=1;i<=9;i++)
        {
            switch(i)             //按属性贴图
            {
            case 1:
                BitBlt(hdc,0,0,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 2:
                BitBlt(hdc,200,0,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 3:
                BitBlt(hdc,400,0,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 4:
                BitBlt(hdc,0,160,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 5:
                BitBlt(hdc,200,160,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 6:
                BitBlt(hdc,400,160,200,160,mdc,point[i].x,point[i].y,SRCCOPY);            
                break;
            case 7:
                BitBlt(hdc,0,320,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 8:
                BitBlt(hdc,200,320,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 9:
                BitBlt(hdc,400,320,200,160,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            default:
                MessageBox(NULL,"贴图序列号错误!","",NULL);
            }
        }    
        for(int j=1;j<=9;j++)
        {
            if(point[j].num==9)
            {
                SelectObject(mdc,empty);
                switch(j)                                     //贴上空白图
                {
                case 1:
                    BitBlt(hdc,0,0,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 2:
                    BitBlt(hdc,200,0,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 3:
                    BitBlt(hdc,400,0,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 4:
                    BitBlt(hdc,0,160,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 5:
                    BitBlt(hdc,200,160,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 6:
                    BitBlt(hdc,400,160,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 7:
                    BitBlt(hdc,0,320,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 8:
                    BitBlt(hdc,200,320,200,160,mdc,0,0,SRCCOPY);
                    break;
                case 9:
                    BitBlt(hdc,400,320,200,160,mdc,0,0,SRCCOPY);
                    break;
                default:;
                }
                break;
            }
        }
        int finish=0;
        for(int k=1;k<=9;k++)
        {
            if(point[k].num==k)
                finish++;            //做完成判断 完成则finish应该为line*line
        }
        if(finish==9)              //完成则执行
        {
            fin=true;
            sndPlaySound("Source\\sound\\FTELEP2电火花.wav",SND_ASYNC | SND_FILENAME);
            MessageBox(NULL,"Finish! Change a harder one,try it again!","恭喜^_^",NULL);
            if(n<high3)  //如果出现新记录...
            {
                Sleep(100);                                        //睡一下,让记录来的别太突然~
                high3=n;
                SelectObject(mdc,empty);
                BitBlt(hdc,1007,433,100,30,mdc,250,0,SRCCOPY);     //贴个背景的绿图,要不如n为44,记录为100,就会出现记录显示为440 再刷新下才能看到是44
                sprintf(str,"%d",high3);                            //显示新记录!
                TextOut(hdc,1007,433,str,strlen(str));
                sndPlaySound("Source\\sound\\new.wav",SND_ASYNC | SND_FILENAME);
                MessageBox(NULL,"THE NEW RECORD!","恭喜^_^",NULL);            
                Save();            //保存新记录到文件
            }
        }
    }

    else if(4==line)
    {
        sprintf(str,"%d",high4);
        TextOut(hdc,1007,433,str,strlen(str));
        if(new4)
        {
            GetPos();
            new4=false;
        }
        SelectObject(mdc,pic);
        for(int i=1;i<=16;i++)
        {
            switch(i)
            {
            case 1:
                BitBlt(hdc,0,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 2:
                BitBlt(hdc,150,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);            
                break;
            case 3:
                BitBlt(hdc,300,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 4:
                BitBlt(hdc,450,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 5:
                BitBlt(hdc,0,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 6:
                BitBlt(hdc,150,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 7:
                BitBlt(hdc,300,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 8:
                BitBlt(hdc,450,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;

[1] [2] [3] [4]  下一页

Tags:广东网盟  
  •         用户名: 验证码: 验证码,看不清楚请点击刷新验证码 (注“”为必填内容。)


    文章评论: [ 查看全部 ] 网友评论
    关于网盟 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 联系方式

    Copyright © 2003-2008 Gdwg.Net. All Rights Reserved .
    中国广东网管联盟设计维护.网站备案:粤ICP备08020875号