Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: FPS:n rajoitus

Sivun loppuun

mika132 [18.11.2009 17:52:11]

#

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.

Metabolix [18.11.2009 17:55:05]

#

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

mika132 [18.11.2009 18:20:14]

#

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/24453-cpp-musa-luokka-sdl-mixerille


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

Metabolix [18.11.2009 19:32:07]

#

Katsopa siitä vinkistä uudelleen, mikä Tausta on tyypiltään ja miten se kuuluisi luoda.

mika132 [18.11.2009 20:12:35]

#

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

Metabolix [18.11.2009 20:20:33]

#

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

mika132 [18.11.2009 20:31:23]

#

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.

mika132 [22.11.2009 15:31:15]

#

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.

Metabolix [22.11.2009 15:42:14]

#

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.

mika132 [22.11.2009 19:17:42]

#

Jos käytän tuota ylempää niin mitään ei kuulu ja peli menee jumiin (eli ei lataa alkuvalikkoa)


Sivun alkuun

Vastaus

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

Tietoa sivustosta