Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ongelmia strategiapelissä

Sivun loppuun

InvalidCo [17.02.2006 20:23:26]

#

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?

Metabolix [17.02.2006 20:32:32]

#

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.

tgunner [17.02.2006 22:54:21]

#

Mihin sinä tuota math.h kirjastoa tarvitset? (Korjatkaa jos olen jättänyt lukematta jonkin kohdan).

Meitsi [17.02.2006 22:55:28]

#

Kenties yrität kääntää ohjelmaa, mutta binääri onkin jo käynnissä taustalla vahingossa?

InvalidCo [17.02.2006 23:36:47]

#

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!

Metabolix [17.02.2006 23:39:07]

#

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.)

tn [18.02.2006 16:38:15]

#

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.

Meitsi [18.02.2006 16:49:31]

#

Varmaan windowsin tiedoston lukottaminen joka joskus jumittuu. Kokeile projektiasetuksista vaihtaa executablen nimeä.

os [18.02.2006 18:32:32]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta