⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 拼图游戏源代码.txt

📁 拼图游戏源代码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
                          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;
            case 9:
                BitBlt(hdc,0,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 10:
                BitBlt(hdc,150,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 11:
                BitBlt(hdc,300,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 12:
                BitBlt(hdc,450,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 13:
                BitBlt(hdc,0,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 14:
                BitBlt(hdc,150,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 15:
                BitBlt(hdc,300,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            case 16:
                BitBlt(hdc,450,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);                
                break;
            default:
                MessageBox(NULL,"贴图序列号错误!","",NULL);
            }
        }    
        for(int j=1;j<=16;j++)
        {
            if(point[j].num==16)
            {
                SelectObject(mdc,empty);
                switch(j)
                {
                case 1:
                    BitBlt(hdc,0,0,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 2:
                    BitBlt(hdc,150,0,150,120,mdc,0,0,SRCCOPY);            
                    break;
                case 3:
                    BitBlt(hdc,300,0,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 4:
                    BitBlt(hdc,450,0,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 5:
                    BitBlt(hdc,0,120,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 6:
                    BitBlt(hdc,150,120,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 7:
                    BitBlt(hdc,300,120,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 8:
                    BitBlt(hdc,450,120,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 9:
                    BitBlt(hdc,0,240,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 10:
                    BitBlt(hdc,150,240,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 11:
                    BitBlt(hdc,300,240,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 12:
                    BitBlt(hdc,450,240,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 13:
                    BitBlt(hdc,0,360,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 14:
                    BitBlt(hdc,150,360,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 15:
                    BitBlt(hdc,300,360,150,120,mdc,0,0,SRCCOPY);                
                    break;
                case 16:
                    BitBlt(hdc,450,360,150,120,mdc,0,0,SRCCOPY);                
                    break;
                default:;
                }
                break;
            }
        }
        int finish=0;
        for(int k=1;k<=16;k++)
        {
            if(point[k].num==k)
                finish++;
        }
        if(finish==16)
        {
            fin=true;
            sndPlaySound("Source\\sound\\FTELEP2电火花.wav",SND_ASYNC | SND_FILENAME);
            MessageBox(NULL,"Finish! Change a harder one,try it again!","恭喜^_^",NULL);
            if(n<high4)
            {
                Sleep(100);
                high4=n;
                SelectObject(mdc,empty);
                BitBlt(hdc,1007,433,100,30,mdc,250,0,SRCCOPY);
                sprintf(str,"%d",high4);
                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(5==line)
    {
        sprintf(str,"%d",high5);
        TextOut(hdc,1007,433,str,strlen(str));
        if(new5)             //更新5X5
        {
            GetPos();
            new5=false;
        }
        SelectObject(mdc,pic);
        for(int i=1;i<=25;i++)
        {
            switch(i)
            {
            case 1:
                  BitBlt(hdc,0,0,120,96,mdc,point[i].x,point[i].y,SRCCOPY);                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -