Miten hän C++ mahdetaan tuota FPS hieman rajoittaa jottei tehokkaimmilla koneilla peli pyöri aivan tolkutonta vauhtia jolloin animaatiot sun muut menevät alle silmän räpäyksen ohi.
Kokeilepa lukea matopelioppaita. Tuohon nimenomaiseen kysymykseen päästään kolmannessa osassa. Kannattaa muistaa myös asian toinen puoli eli hitaat koneet.
Lue koko opassarja, tarvitset sitä.
En ole edes nähnyt vielä tuollaista. Vaikuttaa hyvältä oppaalta. :D
Mutta sen verran, että en edelleenkään saa SDL_Mixeriä toimimaan. Joten ajattelin, että otan ns. Valmiin enginen tuolta koodvinkeistä.
https://www.ohjelmointiputka.net/koodivinkit/
Mutta ongelmana on se, että tuo koodini ei ilmeisesti tunnista musaluokka.h funktioita jostakin pirullisesta syystä.
// include järjestys: #include "stdafx.h" #include <iostream> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include "windows.h" #include <cmath> #include <io.h> #include <SDL.h> #include <SDL_rotozoom.h> #include "SDL_ttf.h" #include <SDL_mixer.h> #pragma comment(lib, "SDL_ttf.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDL_gfx.lib") #include "start.hfe" #include "Data/musa_engine.h" //Muutin nimen tarkoituksella #include "functions.hfe" #include "Data/tekoaly.ggy" #include "Data/text.hfe"
//start.hfe: Mix_Chunk *Tausta;
Tässä noita errori rivejä ja hieman koodia ennen niitä ja jälkeen niit:
LataaPeli(); if(Mix_PlayChannel(0, aani, 1)==-1) { fprintf(stderr, "Virhe : %s ", Mix_GetError()); } Tausta.Toista(1); SDL_SetColorKey(osoitin, SDL_SRCCOLORKEY, SDL_MapRGB(osoitin->format,0,0,0));
//ennen tulee vain while silmukan päättyminen. Tausta.Vapauta(); Mix_CloseAudio(); SDL_Quit();
alustukset ovat tehty tismalleen kuin koodissa (muutamaa kohtaa muokkasin, kun erroreita tuli 6kpl, mutta nyt en pääse viimeisistä 2 eroon
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\fight in street\fight in street\fight in street.cpp(54) : error C2228: left of '.Toista' must have class/struct/union
1> type is 'Mix_Chunk *'
1> did you intend to use '->' instead?
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\fight in street\fight in street\fight in street.cpp(132) : error C2228: left of '.Vapauta' must have class/struct/union
Katsopa siitä vinkistä uudelleen, mikä Tausta on tyypiltään ja miten se kuuluisi luoda.
Tästä tämä paranee. En ymmärrä paljoakaan noita linkkeri erroreita joten:
1>Linking...
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_LoadWAV_RW referenced in function "public: __thiscall Musa::Musa(char *,int)" (??0Musa@@QAE@PADH@Z)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_FreeChunk referenced in function "public: void __thiscall Musa::Vapauta(void)" (?Vapauta@Musa@@QAEXXZ)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_PlayChannelTimed referenced in function "public: int __thiscall Musa::Toista(int)" (?Toista@Musa@@QAEHH@Z)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_VolumeChunk referenced in function "public: int __thiscall Musa::Voimakkuus(int)" (?Voimakkuus@Musa@@QAEHH@Z)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_FadeOutChannel referenced in function "public: void __thiscall Musa::Haivyta(int)" (?Haivyta@Musa@@QAEXH@Z)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_HaltChannel referenced in function "public: void __thiscall Musa::Lopeta(void)" (?Lopeta@Musa@@QAEXXZ)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_Pause referenced in function "public: void __thiscall Musa::Keskeyta(void)" (?Keskeyta@Musa@@QAEXXZ)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_Resume referenced in function "public: void __thiscall Musa::Jatka(void)" (?Jatka@Musa@@QAEXXZ)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_FadeInChannelTimed referenced in function "public: int __thiscall Musa::ToistaHaivyttaen(int,int)" (?ToistaHaivyttaen@Musa@@QAEHHH@Z)
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_CloseAudio referenced in function _SDL_main
1>Fight In Street.obj : error LNK2019: unresolved external symbol _Mix_OpenAudio referenced in function _SDL_main
1>C:\Documents and Settings\Mika.KOTI-8FEC3C6EF1\Omat tiedostot\Visual Studio 2008\Projects\Fight In Street\Debug\Fight In Street.exe : fatal error LNK1120: 11 unresolved externals
Linkkerin virheissä ei ole paljon ymmärrettävää: Sanasta "unresolved" tietää heti, että funktioita puuttuu. Funktioiden nimistä voi päätellä, mistä kiikastaa. Esimerkiksi tuossa puuttuvat SDL_mixerin funktiot, eli SDL_mixer-kirjastoa ei ole linkitetty. Noin MSVC:n käyttäjänä voit hoitaa linkityksen pragma-rivillä, ota mallia ohjelmasi aiemmista riveistä.
hmm... Jännää, että musiikki ei lähde soimaan. Peli jää jumiin (ei lataa aloitusivua) eikä kuulu edes ääntä:
Yritys 1:
Tausta.Toista(1); Tausta.Voimakkuus(50); AlkuValikko(); while (pois == false) { if (huone == 0) { AlkuValikko(); AlkuValikkoToiminnot(); SDL_Flip(naytto); }
Yritys 2:
AlkuValikko(); while (pois == false) { if (huone == 0) { Tausta.Toista(1); Tausta.Voimakkuus(50); AlkuValikko(); AlkuValikkoToiminnot(); SDL_Flip(naytto); }
eikä kumpikaan tykkää toimia.
Koska täältä löytyy tuo nuo viimeisimmät asetukseni tuohon koodiin niin laitoin tämän tänne:
Miksei (yllä mainittu) ei lähde musiikki soimaan vaan lukittaa pelin. Ihan kuin se yrittäisi lähteä soimaan, mutta ei pääse.
Tuossa pätkässä ei näy mitään virhettä (tosin toinen versio on aivan väärin, kuten toivottavasti itsekin ymmärrät). Luultavasti olet vain rikkonut jotain siinä vaiheessa, kun "korjasit" valmiista koodista kohtia, joista sait virheilmoituksia.
Jos käytän tuota ylempää niin mitään ei kuulu ja peli menee jumiin (eli ei lataa alkuvalikkoa)
Aihe on jo aika vanha, joten et voi enää vastata siihen.