2016-03-30 20 views
0

ビジュアルスタジオは今日本当に私の一日をうんざりしています。私はちょうど私のマリオレベルエディタ(winbgim graphics.hを使用して作成された私はビジュアルスタジオでそれを使用して、それは治療を働く)私は新しい基本ブロックを追加するためにdecidet(私はquestionmarkブロックを時間 )。このプロセスは、いくつか変更して新しいビットマップをインポートするだけでかなり簡単でした。私はプログラムをコンパイルしてすぐに、どこか2秒遅れのようにプログラムが実行されていることに気付きました。バックラウンドカラーをロードするのに約1.5秒かかる。私は実際にそこに起こったものを知らないビジュアルスタジオはdllのブッチを読み込みません

'bgi.exe' (Win32): Loaded 'C:\Users\Moustachespy\Source\Repos\CreateRemake\bgi\Release\bgi.exe'. Symbols loaded. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\comdlg32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\combase.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\SHCore.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shlwapi.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shell32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.10586.0_none_811bc0006c44242b\comctl32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\windows.storage.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel.appcore.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\powrprof.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\profapi.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\FirewallAPI.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\netapi32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\davhlpr.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\fwbase.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\uxtheme.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\coml2.dll'. Cannot find or open the PDB file. 
'bgi.exe' (Win32): Loaded 'C:\Windows\SysWOW64\asycfilt.dll'. Cannot find or open the PDB file. 
The thread 0x4360 has exited with code 0 (0x0). 
The thread 0x2858 has exited with code 0 (0x0). 
The thread 0x40f4 has exited with code 0 (0x0). 
The thread 0x1e08 has exited with code 0 (0x0). 
The program '[152] bgi.exe' has exited with code 0 (0x0). 

: HERESに新しいコード:

#include "graphics.h" 
//#include <Windows.h> 
#include <math.h> 
#include <fstream> 

void drawGridOnX(int xtotal, int ytotal); 
int levelcode[400][45][1]; 
void decodelevelAndDraw(int minx,int maxx); 
void saveCurrentLevel(); 

void main() { 
    initwindow(1600, 900,"Testscreen",0,0,true,true); 
    int x=0,y=0,xmin=0,xmax=23,cellx,celly,cellSize=70, xtotal = 0, ytotal = 0,counter=0,blockchosen=1; 
    // gridposx = 0, gridposy = 0, diffx = 0, diffy = 0, distanceFromMouse = 40, titlenumberx = 0, titlenumbery = 0, 

    while (1) { 
     setbkcolor(9); 
     cleardevice(); 
     ytotal = 0; 
     /*diffx = mousex() - gridposx; 
     while (gridposx < mousex()&&diffx>=70) { 
      gridposx += 70; 

     } 
     while (gridposx > mousex()&&diffx<=-70 + distanceFromMouse) { 
      gridposx =gridposx-70; 

     } 
     diffy = mousey() - gridposy; 
     while (gridposy < mousey() && diffy >= 70) { 
      gridposy += 70; 

     } 
     while (gridposy > mousey() && diffy <= -70+distanceFromMouse) { 
      gridposy = gridposy - 70; 

     } 
     */ 
     cellx = std::floor(mousex()/cellSize); 
     celly = std::floor(mousey()/cellSize); 
     blockchosen = 0; 
     while (ytotal < 900) { 
      drawGridOnX(xtotal, ytotal); 
      ytotal += 70; 
     } 

     if(GetAsyncKeyState(VK_RETURN)){ 
      //saveCurrentLevel(); 

     } 
     else if (GetAsyncKeyState(VK_SHIFT)) { 
      blockchosen = 2; 


     }else if (ismouseclick(WM_LBUTTONDOWN)) { 
       if (ismouseclick(WM_LBUTTONUP)) { 

        getmouseclick(WM_LBUTTONUP, x, y); 
        getmouseclick(WM_LBUTTONDOWN, x, y); 
       } 
       //cellx = gridposx/70; 
       //celly = gridposy/70; 
       cellx += xmin; 

       levelcode[cellx][celly][0]=blockchosen; 
       //printf("CLICK"); 
      }else if (ismouseclick(WM_RBUTTONDOWN)) { 
        if (ismouseclick(WM_RBUTTONUP)) { 

         getmouseclick(WM_RBUTTONUP, x, y); 
         getmouseclick(WM_RBUTTONDOWN, x, y); 
        } 
        //cellx = gridposx/70; 
        //celly = gridposy/70; 
        cellx += xmin; 
        levelcode[cellx][celly][0] = 0; 
        //printf("CLICK"); 
       }else if (GetAsyncKeyState(0x27)) { 
         //printf("RIGHT\n\n\n\n"); 
         Sleep(100); 
         xmin++; 
         xmax++; 
        }else if (GetAsyncKeyState(0x25)&&xmin!=0) { 
         //printf("RIGHT\n\n\n\n"); 
         Sleep(100); 
         xmin--; 
         xmax--; 
       } 
     decodelevelAndDraw(xmin,xmax); 
     readimagefile("question_blueprint.jpg", cellx*70,celly*70, 70+cellx*70, 70+celly*70); 
     //settextstyle(SANS_SERIF_FONT,1); 
     settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 1); 
     outtextxy(0, 0, "Press Enter to save"); 
     //printf("gridposx:%d\tgridposy:%d\ttitlenumberx:%d\ttitlenumbery%d",gridposx,gridposy,gridposx/70,gridposy/70); 
     swapbuffers(); 

    } 
} 


void drawGridOnX(int xtotal, int ytotal) { 
    while (xtotal < 1600) { 
     rectangle(xtotal, ytotal, 70 + xtotal, 70+ytotal); 
     xtotal += 70; 

    } 


} 


void decodelevelAndDraw(int minx,int maxx) { 
    int x = 0, y = 0; 
    while (y != 13) { 
     while (x != maxx) { 
      if (levelcode[x][y][0] == 1) { 
       //x -= minx; 
       readimagefile("question.jpg", x*70-minx*70, y*70, 70 + x*70-minx*70, 70 + y*70); 
       //printf("Block added at %d;%d", x * 70, y * 70); 
      }else readimagefile("grass.bmp", x * 70 - minx * 70, y * 70, 70 + x * 70 - minx * 70, 70 + y * 70); 
      x++; 
     } 
     x = 0; 
     y++; 
    } 
} 

/* 
void saveCurrentLevel() { 
    int x = 0, y = 0, z = 0; 
    ofstream map; 
    map.open("map.txt"); 
    while (y < 13) { 


     while (x < 400) { 
      map << levelcode[x][y][z]; 
     } 
     x = 0; 
     y++; 
     map << "\n"; 
    } 
    map.close(); 



} 
*/ 

を古い(と作業)私はこれらのエラーは、デバッグウィンドウにあった視覚的な勉強から出てきた コード: の#include "graphics.h" //#が含ま の#include の#include

void drawGridOnX(int xtotal, int ytotal); 
int levelcode[400][45][1]; 
void decodelevelAndDraw(int minx,int maxx); 
void saveCurrentLevel(); 

void main() { 
    initwindow(1600, 900,"Testscreen",0,0,true,true); 
    int x=0,y=0,xmin=0,xmax=23,cellx,celly,cellSize=70, xtotal = 0, ytotal = 0,counter=0; 
    // gridposx = 0, gridposy = 0, diffx = 0, diffy = 0, distanceFromMouse = 40, titlenumberx = 0, titlenumbery = 0, 

    while (1) { 
     setbkcolor(9); 
     cleardevice(); 
     ytotal = 0; 
     /*diffx = mousex() - gridposx; 
     while (gridposx < mousex()&&diffx>=70) { 
      gridposx += 70; 

     } 
     while (gridposx > mousex()&&diffx<=-70 + distanceFromMouse) { 
      gridposx =gridposx-70; 

     } 
     diffy = mousey() - gridposy; 
     while (gridposy < mousey() && diffy >= 70) { 
      gridposy += 70; 

     } 
     while (gridposy > mousey() && diffy <= -70+distanceFromMouse) { 
      gridposy = gridposy - 70; 

     } 
     */ 
     cellx = std::floor(mousex()/cellSize); 
     celly = std::floor(mousey()/cellSize); 
     while (ytotal < 900) { 
      drawGridOnX(xtotal, ytotal); 
      ytotal += 70; 
     } 

     if(GetAsyncKeyState(VK_RETURN)){ 
      //saveCurrentLevel(); 

     }else if (ismouseclick(WM_LBUTTONDOWN)) { 
       if (ismouseclick(WM_LBUTTONUP)) { 

        getmouseclick(WM_LBUTTONUP, x, y); 
        getmouseclick(WM_LBUTTONDOWN, x, y); 
       } 
       //cellx = gridposx/70; 
       //celly = gridposy/70; 
       cellx += xmin; 
       levelcode[cellx][celly][0]=1; 
       //printf("CLICK"); 
      }else if (ismouseclick(WM_RBUTTONDOWN)) { 
        if (ismouseclick(WM_RBUTTONUP)) { 

         getmouseclick(WM_RBUTTONUP, x, y); 
         getmouseclick(WM_RBUTTONDOWN, x, y); 
        } 
        //cellx = gridposx/70; 
        //celly = gridposy/70; 
        cellx += xmin; 
        levelcode[cellx][celly][0] = 0; 
        //printf("CLICK"); 
       }else if (GetAsyncKeyState(0x27)) { 
         //printf("RIGHT\n\n\n\n"); 
         Sleep(100); 
         xmin++; 
         xmax++; 
        }else if (GetAsyncKeyState(0x25)&&xmin!=0) { 
         //printf("RIGHT\n\n\n\n"); 
         Sleep(100); 
         xmin--; 
         xmax--; 
       } 
     decodelevelAndDraw(xmin,xmax); 
     readimagefile("question_blueprint.jpg", cellx*70,celly*70, 70+cellx*70, 70+celly*70); 
     //settextstyle(SANS_SERIF_FONT,1); 
     settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 1); 
     outtextxy(0, 0, "Press Enter to save"); 
     //printf("gridposx:%d\tgridposy:%d\ttitlenumberx:%d\ttitlenumbery%d",gridposx,gridposy,gridposx/70,gridposy/70); 
     swapbuffers(); 

    } 
} 


void drawGridOnX(int xtotal, int ytotal) { 
    while (xtotal < 1600) { 
     rectangle(xtotal, ytotal, 70 + xtotal, 70+ytotal); 
     xtotal += 70; 

    } 


} 


void decodelevelAndDraw(int minx,int maxx) { 
    int x = 0, y = 0; 
    while (y != 13) { 
     while (x != maxx) { 
      if (levelcode[x][y][0] == 1) { 
       //x -= minx; 
       readimagefile("question.jpg", x*70-minx*70, y*70, 70 + x*70-minx*70, 70 + y*70); 
       //printf("Block added at %d;%d", x * 70, y * 70); 
      } 
      x++; 
     } 
     x = 0; 
     y++; 
    } 
} 

/* 
void saveCurrentLevel() { 
    int x = 0, y = 0, z = 0; 
    ofstream map; 
    map.open("map.txt"); 
    while (y < 13) { 


     while (x < 400) { 
      map << levelcode[x][y][z]; 
     } 
     x = 0; 
     y++; 
     map << "\n"; 
    } 
    map.close(); 



} 
*/ 

私はこのサイトのgraphics.hファイルを使用しています:http://winbgim.codecutter.org/ はい私は絶対にgraphics.hを使用しなければなりません。私の先生に尋ねる。 はい、私はその配列をグローバル変数として持つ必要があります。人々の多くはそのようなものではなく、私はそれらのうちの1つだけで作業するのが簡単です。グローバルで1つの配列が好きではないので、誰かを傷つけるでしょうか?相続人

あなたが何か必要な場合は私の全体のプロジェクトフォルダのZIP:私は私のプログラムのコメントの多くがいることを知っているhttps://www.dropbox.com/s/kym5r1sggmym78f/bgi.rar?dl=0

を。彼らはそれとは関係がありません。それらは私が使用した古い方法であり、新しい方法で置き換えられています。バックアップ計画としてそこに残しました。

イム使用して:勝利10 VS2015コミュニティ

を私はこの問題を解決してください。

+0

PDBファイルはデバッガで必要です。リリースモードとデバッグモードを切り替えましたか?また見るだけで再建を試みてください。 –

+0

pdbファイルは、Microsoft dllの内部でデバッグする場合にのみ必要です。警告を無視しない場合。これは、アプリケーションを実行している問題とは関係ありません。また、すべてのDLLが実際に正常に読み込まれました。 – drescherjm

+0

jeahしかし、なぜ単純に1つの変数を追加するだけでパフォーマンスが低下しましたか? – MoustacheSpy

答えて

1

decodelevelAndDraw()の機能をご覧ください。

levelcodeマップに1がある場合、「古い」画像は「question.jpg」画像のみを描画しました。

ごとにに「新しい」と「grass.bmp」が表示されます。それはしばらく時間がかかります...

P.S.私はあなたのreadimagefile()機能が何をしているのかわかりません。私はあなたがそれを描画する必要があるたびに同じJPEGイメージを実際にロードしないことを願っています。一度だけプリロードできますか?