Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder »

Misthema wrote:Ongelmana siis on, etten saa törmäyksiä toimimaan, kun ukkeli liikkuu nuolinäppäimen painalluksesta 32px painettuun suuntaan.
Harakan systeemi on hyvä ja toimiva jos todellakin haluat että ukkeli/pallukka/joku liikkuu 32 pikselin nykäyksin.
Jos taas haluat että objekti liikkuu tuon 32 pikseliä jouhevasti eikä hypähtäen niin katso tämän topicin sivulta 9 tekemäni esimerkki. Siinä tosin siirtymä on 48 px mutta siitä on helppo soveltaa.
viewtopic.php?f=10&t=28&st=0&sk=t&sd=a&start=164
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: Tyhmät kysymykset

Post by Misthema »

Harakka: Tuota viimeistä kokeilin, toimi loistavasti, mutta oikealle ei pystynyt liikkumaan ollenkaan... :/
En sitten tiedä mikä siinä on, mutta nyt kävi näin.

Kiitos Harakalle ja Marcoderille neuvoista, kokeilen kaikkia ja edittaan sitten minkä niistä sain toimimaan parhaiten. :)
EDIT:

Marcoderin esimerkki oli muuten hyvä, mutta ideana on juuri se että liikutaan 32 pikselin nykäyksin.
Harakan toinen esimerkki toimi, joten otan sen käyttöön.

Suuri kiitos vielä molemmille! :)

User avatar
valscion
Moderator
Moderator
Posts: 1597
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

Misthema wrote:Harakka: Tuota viimeistä kokeilin, toimi loistavasti, mutta oikealle ei pystynyt liikkumaan ollenkaan... :/
En sitten tiedä mikä siinä on, mutta nyt kävi näin.
Se johtuu siitä, että kun harakan koodissa tarkistetaan oikealle painaminen, niin katsotaan näppäintä "cbright" jota ei oikeasti ole olemassa. Vaihda sen tilalle cbkeyright ja homma toimii.

Tässä vielä korjattu koodinpätkä:

Code: Select all

newX = ObjectX(ukko) + keyhit(cbkeyright)*32 - KeyHit(cbkeyleft)*32
newY = ObjectY(ukko) + KeyHit(cbkeyup)*32 - keyhit(cbkeydown)*32

If not GetMap(2,newx,newy) then PositionObject ukko,newX,newY
EDIT:

100. posti! w00t!! \o/

cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
beg
Newcomer
Posts: 19
Joined: Fri Dec 14, 2007 2:08 pm

Re: Tyhmät kysymykset

Post by beg »

koodaaja wrote:
beg wrote:Kysyisin yhtä tyhmää kysymystä eli miten saan nuo pelit/kuvat yms. jotka ovat rar muodossa pelattua/katsottua??? Tai siis millä ohjelmalla ne voidaan katsoa??
Eh.. niiden oletusohjelmalla? Tuplaklikkaat .raria->winrar aukeaa ja näyttää sisällön, sieltä tuplaklikki->tiedosto aukeaa oletusohjelmalla, .exet ihan omina ohjelminansa (luonnollisesti).
Kiitoksia! Juuri tuota winraria hain kun sitä ei ollut ennestään.
Eräs Vierailija

Re: Tyhmät kysymykset

Post by Eräs Vierailija »

Kuinka

a) Saada jokin tietty asia pätemään kaikkiin muuttujiin kerralla, esim. If juttu<0 then juttu=0

b) Saada jonkinlainen "ShowObject OFF" imageille? DrawImagessa ei sellaista näytä olevan.
Szanne
Member
Posts: 50
Joined: Thu Aug 30, 2007 5:12 pm
Location: Suomi

Re: Tyhmät kysymykset

Post by Szanne »

a) Tätä kohtaa en tajunnut, joten en vastaa siihen.
b) Kuva pitää piirtää joka kerta silmukassa, että se näkyy. Eli jos et käytä Drawimage:a silmukassa, niin kuvaa ei piirretä. Ehtolausekkeella voit vaikka tarkastella, että pitääkö kuva piirtää.
2X - in English viewtopic.php?f=18&t=3057
2X - suomeksi viewtopic.php?f=11&t=3058

Olen Jop Studio vanhalta foorumilta.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

a)Tee taulukko/type ja käy muuttujat sitten läpi.

b) Jätät piirtämättä, siis yksinkertaisesti ei DrawImagea. (If image_nakyy Then drawimage)
M.R
Active Member
Posts: 102
Joined: Sat Dec 22, 2007 3:05 pm

Re: Tyhmät kysymykset

Post by M.R »

Miksiän tulee erroria?Luultavasti puuttuu Endiffiä tai vastaavaa:

Code: Select all

For vastustaja.Vihu=Each Vihu
If vastustaja\ammukset>50 And vastustaja\patruunat>0 Then
If Distance2(vastustaja\obj,ukko)<10000 Then
CurvePointObject(vastustaja\obj,ukko)
If Distance2(vastustaja\obj,ukko)>500 Then MoveObject vastustaja\obj,3
If Distance2(vastustaja\obj,ukko)<1000 Then ammu(vastustaja\obj)
Else
MoveObject vastustaja\obj,2
TurnObject vastustaja\obj,0.1
If GetMap(2,ObjectX(vastustaja\obj),ObjectX(vastustaja\obj))=1 Then
TurnObject vastustaja\obj,180:MoveObject vastustaja\obj,5
EndIf
Else
CurvePointObject(vastustaja\obj,obj_paukut)
MoveObject vastustaja\obj,2

ox=ObjectX(vastustaja\obj)
oy=ObjectX(vastustaja\obj)

If GetMap(2,ox,oy) Then
TurnObject vastustaja\obj,180
MoveObject vastustaja\obj,15
EndIf
If GetMap(3,ox,oy)=10 Then
vastustaja\ammukset=vastustaja\ammukset+1
If vastustaja\ammukset=vastustaja\ammukset>100 Then
vastustaja\patruunat=vastustaja\patruunat-1
vastustaja\ammukset=vastustaja\ammukset=0
EndIf
EndIf

Next vastustaja
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder »

M.R wrote:Miksiän tulee erroria?Luultavasti puuttuu Endiffiä tai vastaavaa:
Taitaa puuttua joo. Sisennä ihmeessä koodisi niin saat siitä edes itse selvää.
M.R
Active Member
Posts: 102
Joined: Sat Dec 22, 2007 3:05 pm

Re: Tyhmät kysymykset

Post by M.R »

Marcoder wrote:
M.R wrote:Miksiän tulee erroria?Luultavasti puuttuu Endiffiä tai vastaavaa:
Taitaa puuttua joo. Sisennä ihmeessä koodisi niin saat siitä edes itse selvää.

Panin yhden Endiffin sinne niin erroria ei tule mutta tuskimpa oikeaan paikkaan.värkkäänsen oikeaan paikkaan kun peliä voi kokeilla.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Tyhmät kysymykset

Post by Koodiapina »

Sellaisen vinkin sanoisin, että kannattaa tehdä alun alkaen hyvin siistiä koodista, vaikka sen rakenteen alussa ymmärtäisikin täysin. Muutaman tuhannen rivin tai viikon tauon jälkeen voi tulla vastaan koodin uusiminen, kuten minulle on käynyt monta kertaa :oops:
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Tyhmät kysymykset

Post by Marcoder »

M.R wrote:Panin yhden Endiffin sinne niin erroria ei tule mutta tuskimpa oikeaan paikkaan.värkkäänsen oikeaan paikkaan kun peliä voi kokeilla.
Kuten jo aiemmin sanoin niin SISENNÄ koodisi niin näet heti mihin se endif pitää laittaa.
BulletStorm

Re: Tyhmät kysymykset

Post by BulletStorm »

Alotin tässä aamulla mapin teon TileGenillä ja tein siinä ihan sellasen pienen pläntin missä kokeilin tilejä jotka on saatu valmiiksi (toisin sanoen puu, ruoho ja tie). Sitten kun latasin sen peliini ja kokeilin sitä, kävi näin:

Image

Image

Pelaaja siis jää tuon mapin taakse, vaikka ruoho ja tie on tehty "Back" layerilla. Mistäs vois mahdollisesti johtua? :|

E: Tämän viestin kirjoittamisen jälkeen on health bar muuttunut täysin erilaiseksi.
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x »

Lataa se kartta ennen sitä ukkoa, tai käytä komentoa objectorder <karttamuuttujan nimi>,-1.

Yleisestikin kehoitetaan lataamaan kartta ennen kaikkea muuta, mutta jos se tarvii ladata jossain muualla niin sitten täytyy vain koodarin nähdä vain vähän enemmän vaivaa.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
BulletStorm

Re: Tyhmät kysymykset

Post by BulletStorm »

otto90x wrote:Lataa se kartta ennen sitä ukkoa, tai käytä komentoa objectorder <karttamuuttujan nimi>,-1.

Yleisestikin kehoitetaan lataamaan kartta ennen kaikkea muuta, mutta jos se tarvii ladata jossain muualla niin sitten täytyy vain koodarin nähdä vain vähän enemmän vaivaa.
Ohoh! Joo no näitä kyssiä saattaa tulla viel jonkin verran, kun siitä on sen verran aikaa kun viimeksi oon koodannu :roll:

Joo no mä en katos ollenkaan muistanut tota, että uudemmat objektit piirretään vanhempien päälle, tai no... nii-in.
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Re: Tyhmät kysymykset

Post by jannepelaa »

Onko pelaaja kuva vai objekti? Jos kuva, niin pelaaja pitää piirtää DrawGame:n jälkeen. Ja jos kuva, niin onko ObjectOrderilla kenttä laitettu eteen, tai pelaaja taakse?
EDIT: Muut ehtivät edelleni! :x
cheeshelmet.jr
Member
Posts: 75
Joined: Tue Aug 28, 2007 6:59 am

Re: Tyhmät kysymykset

Post by cheeshelmet.jr »

kuinka voin tarkistaa milloin jokin piste törmää kun se liikkuu nopeasti???? olen kokeillut monia tapoja mutta aina se seinään uppoaa :x
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

cheeshelmet.jr wrote:kuinka voin tarkistaa milloin jokin piste törmää kun se liikkuu nopeasti???? olen kokeillut monia tapoja mutta aina se seinään uppoaa :x
Kjöh? Siis piste? Nyt tarkoitat varmaan luotia yms. objekti-tilemap-systeemillä toteutettuna? Liikuta luotia vähän kerrallaan, kas näin:

Code: Select all

For i = 0 To 15
    Moveobject luoti, 1
    'törmäyksentarkistus
Next i
Ja törmäyksentarkistukseen kannattaa käyttää GetMap()ia, tarkistat siis tyyliin

Code: Select all

If GetMap(2, ObjectX(luoti), ObjectY(luoti)), Then tuhoa_luoti
Sitä käyttäen voit siirtää luotia enemmänkin kerrallaan, vaikka viisi-kuusi pikseliä - ei enempää, muuten se oikaisee kulmista yms. Ja jos teet näin, muista ottaa setupcollision pois, se jää tarpeettomaksi. Ja vihuihin yms. esineisiin tarkistus kannattaa tehdä ObjectsOverlapilla.
cheeshelmet.jr
Member
Posts: 75
Joined: Tue Aug 28, 2007 6:59 am

Re: Tyhmät kysymykset

Post by cheeshelmet.jr »

koodaaja wrote:
cheeshelmet.jr wrote:kuinka voin tarkistaa milloin jokin piste törmää kun se liikkuu nopeasti???? olen kokeillut monia tapoja mutta aina se seinään uppoaa :x
Kjöh? Siis piste? Nyt tarkoitat varmaan luotia yms. objekti-tilemap-systeemillä toteutettuna? Liikuta luotia vähän kerrallaan, kas näin:

Code: Select all

For i = 0 To 15
    Moveobject luoti, 1
    'törmäyksentarkistus
Next i
Ja törmäyksentarkistukseen kannattaa käyttää GetMap()ia, tarkistat siis tyyliin

Code: Select all

If GetMap(2, ObjectX(luoti), ObjectY(luoti)), Then tuhoa_luoti
Sitä käyttäen voit siirtää luotia enemmänkin kerrallaan, vaikka viisi-kuusi pikseliä - ei enempää, muuten se oikaisee kulmista yms. Ja jos teet näin, muista ottaa setupcollision pois, se jää tarpeettomaksi. Ja vihuihin yms. esineisiin tarkistus kannattaa tehdä ObjectsOverlapilla.
Nyt ihan pistettä meinään. Olen kokeillut tuon getmapin mutta aina se uppoaa sinne seinään noin kolmanneksen!!!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Muistahan toki käyttää maailmankoordinaatteja, jos piirrät sen ihan Dotilla (ennen dottia DrawToWorld). Ja silloinhan y kasvaa ylös mentäessä.
Locked