Joo, on sellainen ongelma että teen hienoa reaali-aika strategiapeliä, mutta kääntö ei ota onnistuakseen.
Dev-Cpp /w GCC sanoo seuraavaa:
Permission denied Id returned 1 exit status [Build Error] [hyppely.exe] Error 1
Ja koska joku kuitenkin kysyy, niin tässä on (sotkuinen) koodi:
#include <SDL/SDL.h> #include <math.h> void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y, int monesko) { SDL_Rect alue; // mille alueelle näyttöä kuva piirretään alue.x = x; // koordinaatit alue.y = y; SDL_Rect kuvaalue; if (monesko>-1) { kuvaalue.x = 48 * monesko; kuvaalue.y = 0; kuvaalue.w = 48; kuvaalue.h = 64; } else { kuvaalue.x = 0; kuvaalue.y = 0; kuvaalue.w = 32; kuvaalue.h = 32; } SDL_BlitSurface(kuva, &kuvaalue, naytto, &alue); // piirto } int main(int argc, char *argv[]) { if (SDL_Init(SDL_INIT_VIDEO) < 0) { return 0; } SDL_WM_SetCaption("Hyppely", NULL); SDL_ShowCursor(0); SDL_Surface *naytto; naytto=SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF); //Kuvien lataukset SDL_Surface *ukkelikuva, *kursorikuva, *minnekuva, *valittukuva; ukkelikuva=SDL_LoadBMP("ukkeli.bmp"); kursorikuva=SDL_LoadBMP("kursori.bmp"); minnekuva=SDL_LoadBMP("minne.bmp"); valittukuva=SDL_LoadBMP("valittu.bmp"); SDL_SetColorKey(ukkelikuva, SDL_SRCCOLORKEY, SDL_MapRGB(ukkelikuva->format,255,255,255)); SDL_SetColorKey(kursorikuva, SDL_SRCCOLORKEY, SDL_MapRGB(kursorikuva->format,255,255,255)); SDL_SetColorKey(minnekuva, SDL_SRCCOLORKEY, SDL_MapRGB(minnekuva->format,255,255,255)); SDL_SetColorKey(valittukuva, SDL_SRCCOLORKEY, SDL_MapRGB(minnekuva->format,255,255,255)); //Peli alkaa tästä Uint8* nappi; int ukkelinx, ukkeliny, ukkelinf, hX, hY, mx, my, ax, ay, napit; bool valittu = false, mene = false, ammu = false; ukkelinx=50; ukkeliny=400; SDL_Event eventti; while (true) { SDL_PollEvent(&eventti); //Tapahtumat talteen SDL_FillRect(naytto, NULL, SDL_MapRGB(naytto->format, 0, 0, 0)); //Ruutu tyhjäksi nappi = SDL_GetKeyState(NULL); //Napit talteen if (nappi[SDLK_ESCAPE]) break; napit=SDL_GetMouseState(&hX, &hY); if (napit & SDL_BUTTON(1)) { mx = hX+16; my = hY+16; mene=true; } if (nappi['a']) mene=false; if (nappi['w']) ammu=false; if (napit & SDL_BUTTON(3)) { ax = hX; ay = hY; ammu=true; } if (mene) PiirraKuva(minnekuva, naytto, (mx-16), (my-16), -1); if (mene) { if ((ukkelinx+24)<mx) { ukkelinx += 1; } if ((ukkelinx+24)>mx) { ukkelinx -= 1; } if ((ukkeliny+64)<my) { ukkeliny += 1; } if ((ukkeliny+64)>my) { ukkeliny -= 1; } } if (mene&&(ukkelinx + 24)>(mx-5)&&(ukkelinx + 24)<(mx+5)&&(ukkeliny + 64)>(my-5)&&(ukkeliny + 64)<(my+5)) mene=false; PiirraKuva(ukkelikuva,naytto,ukkelinx,ukkeliny,-1); PiirraKuva(kursorikuva,naytto,hX,hY,-1); SDL_Flip(naytto); SDL_Delay(1); } //Loppu SDL_Flip(naytto); SDL_ShowCursor(1); SDL_Quit(); return 0; }
Jep. Ja hyvää hiihtolomaa!
EDIT: BTW tiedän että struktuureita ja muita kannattaa käyttää, ja aion muutenkin lisätä arrayt sitten kun tuo yksi ukkeli kävelee iloisesti tuolla. Eli älkää valittako, jookos?
Varmaan kuitenkin ld eikä Id, olettaisin. Eikä kukaan kaipaa koodiasi, koska ld on edelleenkin linkkeri. "Permission denied" on nähdäkseni harvinaisen yksiselitteinen virheilmoitus, kun tiedostonimikin on annettu. Sinulla ei yksinkertaisesti ole oikeutta kirjoittaa tiedostoon. Kyseisen tiedoston poistaminen voisi olla kova sana.
Mihin sinä tuota math.h kirjastoa tarvitset? (Korjatkaa jos olen jättänyt lukematta jonkin kohdan).
Kenties yrität kääntää ohjelmaa, mutta binääri onkin jo käynnissä taustalla vahingossa?
Joo.
Metabolix: Mitä eroa on Idillä ja Idillä? Onko toisessa ällä tai ykkönen jota en huomannut?
TGunner: math.h-kirjasto oli vahingossa jäänyt aikasemmasta versiosta jossa hyödynsin math.h - kirjaston kivoja funkkareita.
Meitsi: Joo, sitä ei näkynyt Task Managerissa, mutta luulen että asialla on jotain tekemistä USB-muistini kanssa.
Kiitos, ja hyvää loman jatkoa!
Laita fontti, jossa I, l ja 1 erottuvat toisistaan, ja katso itse. (Ei ole pakko selaimen säätöjä muokata, editorikin kelpaa. Copy-paste on keksitty.)
Tuo ongelma on esiintynyt minullakin Dev-C++:n kanssa, mutta syytä en ole saanut selville (tai ainakaan en muista saaneeni...). Asiaan auttaa ainakin koneen uudelleen kännistys.
Varmaan windowsin tiedoston lukottaminen joka joskus jumittuu. Kokeile projektiasetuksista vaihtaa executablen nimeä.
Olen itsekin törmännyt tällaiseen ongelmaan. Hirveän tappelun jälkeen huomasin, että vika olikin Windowsissa eikä ohjelmassani tai DevC++:ssa.
Ohjelmassasi on (jossain vaiheessa) ollut virhe, esimerkiksi muistinkäsittelyssä, ja Windows on tämän johdosta avannut "Dr. Watson" -ohjelman, joka ilmeisesti kuvittelee tekevänsä ongelmalle jotakin. "Permission denied"-jumitus häviää, kun sammutat drwtsn32.exe:n Task Managerilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.