Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pascal: Delphi - fullscreen

Sivun loppuun

HellRazor [10.03.2005 21:45:02]

#

Mitenköhän saan delphillä tehtyä pelini fullscreeniksi? Ettei tuo käynnistä palkki näy tuolla alhaalla.

Juice [10.03.2005 21:57:39]

#

En osaa object pascalia, mutta googletuksella löysin:

form1.Formstyle:=FSStayOnTop;
form1.borderstyle:=bsNone;
form1.left := 0;
form1.top := 0;
form1.width := screen.width;
form1.height := screen.height;

Kokeile.

Metabolix [11.03.2005 04:22:03]

#

Tuo ei ole hyvä tuo Juicen tapa, kun se vain muuttaa ikkunan kokoa. Aitoon fullscreeniin määrätyllä resolla täältä löytyy jopa koodivinkki, mutta se on niin hankalasti tehty siinä, että laitanpa tähän helpon tavan:

procedure GoFullScreen(Leveys, Korkeus, Bpp, Hz: Integer);
var
  NewMode: TDeviceMode;
begin
  with NewMode do begin
    dmSize := SizeOf(TDeviceMode);
    dmPelsWidth := Leveys;  {Leveys}
    dmPelsHeight := Korkeus; {Korkeus}
    dmBitsPerPel := Bpp;  {Bittimäärä}
    dmDisplayFrequency := Hz; {Virkistystaajuus}
    dmFields := DM_PELSWIDTH or DM_PELSHEIGHT
        or DM_DISPLAYFREQUENCY or DM_BITSPERPEL; {Ja nuo otetaan myös käyttöön}
  end;

  {Ja sitten mennään kyseiseen tilaan fullscreeninä.
   Palautuu, kun ohjelma sammuu.}
  ChangeDisplaySettings(NewMode, CDS_FULLSCREEN);
end;

Tila ei sitten muutu, jos jokin attribuuteista ei kelpaa, joten ei kannata vaatia liikoja. EnumDisplayModes-funktiolla saa kivasti listattua näyttötilat, sitä käytin, kun tein hienon options-valikon peliini (joka ei toteutunut). Siinä sai sliderillä valita haluamansa näyttötilan niistä, jotka toimivat.

HellRazor [11.03.2005 16:54:39]

#

Aluksi kaikki näytti hyvältä, käynnistä palkkikin oli poissa, mutta kun teen jotain pelissäni (esim. klikkaan kuvaa) käynnistä palkki tuleekin yhtäkkiä näkyviin. Miten sen saisi pysymään piilossa?

zacura [11.03.2005 17:28:24]

#

Suosittelen SDL:n käyttöä sillä kun saa muitakin hienoja ominaisuuksia. Delphille käännetty versio löytyy tuolta:
http://www.delphi-jedi.org/TEAM_SDL_DOWNLOADS:364081

Metabolix [11.03.2005 20:30:08]

#

Kyllä tämä tapa on toimivaksi todettu, eli jotakin vikaa ohjelmassasi tai Windowsissasi on oltava.

Delphin komponentteja ei ole pelin tekoon suunniteltu (siis mitään Timageja ei kannata käyttää), Delphi on hyötyohjelmia varten. Jos pelin haluat tehdä, "kirjoita se Pascalilla" eli älä juutu Delphin ominaisuuksiin. Valmiiseen ikkunaan voi hyvin piirtää OpenGL:llä ja verkko-ominaisuuksiin vai käyttää valmiita komponentteja, mutta grafiikka ja äänet kaipaavat jotakin tukevampaa kuin TImage. (Onhan noillakin komponenteilla pelejä tehty, mutta muilla keinoilla pääsee helpommalla)

SDL:ää ei minusta kannata tähän sotkea, siitä kun ei lopultakaan Delphin kanssa ole mitään hyötyä. OpenGL:llä pärjää, ja äänet voi alkuun tehdä vaikkapa Housemarque Audio Systemillä.

Biotank [12.03.2005 21:38:39]

#

Eikö Delphillä pysty tekemään Areena-pelisarjan tapaisia pelejä?

Metabolix [13.03.2005 07:55:27]

#

En tunne Areena-sarjaa, mutta koettakaa ymmärtä, että Delphi on vain yksi Pascal-kääntäjä + IDE, ei Delphi ole mitenkään rajoittava tekijä. Pascalilla voi tehdä ihan yhtä paljon kuin C:lläkin, joten pelin tekeminen onnistuu aivan mainiosti. Jos te ette osaa sitä tehdä, se tarkoittaa vain, että pitää harjoitella lisää. Pascalia ei voi siitä syyttää.

Delphin Drag'n'Drop-ympäristö ei ole pelejä varten suunniteltu, ja siksi juuri pelin tekemisessä "Delphillä", eli siis Pascalilla, ei pääse yhtään sen helpommalla kuin C:lläkään, paitsi että Pascal on mukavampaa debugattavaa. Jos siis teet virheitä, käytä mieluummin Pascalia ;)

Pelin tekeminen ei koskaan ole kielestä kiinni; viime kädessä sen voi aina tehdä Assemblyllä. Eri asia sitten on, kuka osaa sitä riittävän hyvin.

HellRazor [13.03.2005 20:40:32]

#

Noniin, nyt käynnistä valikko pysyy piilossa. Piti vain säätää formin minimi leveys ja korkeus. Kiitos tuosta fullscreen koodista, tuli todellakin tarpeeseen.


Sivun alkuun

Vastaus

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

Tietoa sivustosta