Miten saisin Picture1:n pysähtymään, kun se osuu esimerkiksi Picture2:een?
Lähdekoodi:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyLeft Then Picture1.Left = Picture1.Left - 100 End If If KeyCode = vbKeyRight Then Picture1.Left = Picture1.Left + 100 End If If KeyCode = vbKeyUp Then Picture1.Top = Picture1.Top - 100 End If If KeyCode = vbKeyDown Then Picture1.Top = Picture1.Top + 100 End If End Sub
TAAS >_<
Aina ukkoa liikutettaessa katsot, onko sen jokin reuna menossa esteen päälle, jos on, et liikuta.
Ks. esim. https://www.ohjelmointiputka.net/koodivinkit/
Tästäkö ei todellakaan ole mainintaa missään oppaassa? Jos ei, niin jonkun olisi kyllä syytä sellainen tehdä (voisin tehdä sen vaikka itse), sillä kyllä tätä asiaa varmasti on kysytty ainakin kymmenen kertaa.
hunajavohveli kirjoitti:
Tästäkö ei todellakaan ole mainintaa missään oppaassa? Jos ei, niin jonkun olisi kyllä syytä sellainen tehdä (voisin tehdä sen vaikka itse), sillä kyllä tätä asiaa varmasti on kysytty ainakin kymmenen kertaa.
Saako tänne postittaa kyssäreitä vasta kun on lukenut kaikki oppaat?
No ainakin https://www.ohjelmointiputka.net/oppaat/opas.
Koodivinkeistä ja keskustelusta löytyy kyllä hakemalla useampikin esimerkki.
Edit:
ez kirjoitti:
Saako tänne postittaa kyssäreitä vasta kun on lukenut kaikki oppaat?
Pointti on lähinnä se, että näitä samoja asioita kysellään koko ajan. Ottamalla itse asioista selvää säästää aikaa ja vaivaa kaikilta.
Blaze kirjoitti:
Pointti on lähinnä se, että näitä samoja asioita kysellään koko ajan. Ottamalla itse asioista selvää säästää aikaa ja vaivaa kaikilta.
hunajavohveli kirjoitti:
Tästäkö ei todellakaan ole mainintaa missään oppaassa? Jos ei, niin jonkun olisi kyllä syytä sellainen tehdä (voisin tehdä sen vaikka itse), sillä kyllä tätä asiaa varmasti on kysytty ainakin kymmenen kertaa.
ainakin 100 kertaa..
Se mistä joku puhui joskus olisi kätevä..Eli kun joku uusi yrittäisi aloittaa uutta topikkia suorittettaisiin haku automaattisesti silloin ja käyttäjä voisi selata listaa ensin. Jos listasta ei mitään löytyisi niin, aihe vaan esille! Estäisi varmaankin ainakin osan näistä uudelleen kyselyistä.. riippuen vähän siitä kiinnostaako ketään uutta etsiä vai pitääkö koodi saada suoraan nenän eteen!
Sori jos joku uusi nyt kokee että sorsin niitä..
Njooh, tämä oli se kuuluisa korsi, joka katkaisi kamelin selän :)
http://pp.kpnet.fi/blaze/koodifaq.php#collisiondetection
Alkup. kysyjä voisi kertoa, onko noista ohjeista mihinkään ja muut voisivat kertoa, mitkä muut kysymykset tuonne kuuluisivat :)
joo eli yksinkertaisesti selitettynä, jos edessä on jotain, et mene eteenpäin, jos edessä ei ole mitään niin menet vasta sitten, kyllä sitä saa miettiäkin ihan järjelläkin...
en dissaa tämän viestiketjun aloittajaa vaan yleensäkin alkaa ärsyttää se että ei selata mitä muut on kysynyt, sama inhotus iskee kun joku kysyy esim "miten saan teksti tiedoston auki niinq textiboxiin" eli kaikki jotka lukee tämän ja teillä tulee jotain ongelmia, ottakaa ensin selvää onko tästä ongelmasta keskusteltu ohjelmointiputkassa tai muualla aikaisemmin, jos et tosiaan löydä mitään niin eiköhän ole aiheellista sitten luoda uusi topikki... ja pahoitteluni että avauduin tänne, onnistuin taas luomaan offtopikkia (:D hehe)
ja blaze, voisit vielä lisätä faquun just ton tiedoston aukaisemisen...tai no voihan sitä aloittelijat toki vilkaista oppaitakin jossa se on selvästi kerrottu että mitä teet mihinkin tarkoitukseen...
ez: mielellään joo, eipähän kokoaika tarvii kysellä kaikkea, toki asiallisia viestejä saa tulla, ne on tervetulleita, mutta miksi kysellä asiaa joka selitetään oppaissakin selvästi? sitä paitsi oppaitten eri osat on jaoteltu sen verran hyvin että aloittelijakin ymmärtää että jos haluaa tietää miten tehdään semmonen jänskä juttu että painetaan oikella niin ohjelma sammuu, mennää ettii sitten näppäimistö&rotta - oppaista tietoa... eli järkeä saa käyttää... ja jos haluat tietää vain grafiikasta jotain esim point:n käyttö (joka kostautui minulle ja tein turhan topikin tyhmyyttäni) niin eti grafiikka-puolelta, jos et löytänyt jotain asiaa mikä on omasta mielestäsi olennainen osa perustietoa ilmoita oppaan tekijälle ja opas saa ehkä jatkoa ja parannust/päivitetyn version tilalle...
aamen!
:D
ja tuossa toisessa kyssärissä "tiedoston luku" tai yms topikissa on vielä sekin että se löytyy oppaista,hausta sekä koodivinkeistä...
Ei millään pahalla, mutta täytyy vielä ihmetellä, miten kaikki ovat niin mielikuvituksettomia etteivät osaa itse suunnitella törmäystarkistusta? Luulisi olevan itsestään selvä asia, mutta ei voi millään uhrata sitä muutamaa minuuttia, joka kestää tajuta, että voi käyttää yhsinkertaista if-lausetta ja katsoa onko jonkin sijainti pienempi / suurempi / yhtäsuuri kuin jonkin muun ja että kyseessä ovat yleensä esineiden vastakkaiset reunat.
Hmm.. putkan ohjelmointi tason laatua pitäisi saada hieman nostettua. Aluksi kun aloin ohjelmoimaan täältä löytyi vähän sitä sun tätä materiaalia mistä opiskella lisää.
Nyt ei oikein enää löydy :( Nykyään kuin käytössä on suuria läjä apeja ja DirectX..
Minä ainakin keksin aikoinani ihan itse "MITEN SAA NIIN ETTEI UKKO PÄÄSE SEINÄN LÄPI" ja monta muuta asiaa, mitä yleensä kysytään. Onhan se ymmärrettävää etteivät kaikki voi olla lahjakkaita oivaltamaan kaikkia asioita itse, ja siksi olisi kuitenkin suotavaa käyttää hakua, ettei kaikkien tarvitse kysyä joka kerta uudestaan.
tuomas kirjoitti:
Se mistä joku puhui joskus olisi kätevä..Eli kun joku uusi yrittäisi aloittaa uutta topikkia suorittettaisiin haku automaattisesti silloin ja käyttäjä voisi selata listaa ensin. Jos listasta ei mitään löytyisi niin, aihe vaan esille!
Minä tuota taisin kerran ehdottaa. Olisihan se kätevä olla ainakin automaattisesti päällä uusilla jäsenillä, ja tarpeen vaatiessa sen voisi laittaa profiilista pois päältä, jos ei haluaisi automaattihakua.
Blaze kirjoitti:
Alkup. kysyjä voisi kertoa, onko noista ohjeista mihinkään ja muut voisivat kertoa, mitkä muut kysymykset tuonne kuuluisivat :)
Hyvin tehty! Jos nyt jotain korjattavaa, niin nopeus voisi olla vakio, jotta sitä ei aina tarvitse erikseen muuttaa joka kohdasta. Ja hyvä olisi myös mainita, että mittayksikön pitää olla pikseli, jotta kuva liikkuu kunnollista vauhtia. Lisään linkin tuohon varsinaiseen VB FAQ:iin - jota voisin kyllä muutenkin täydentää...
Metabolix kirjoitti:
Ei millään pahalla, mutta täytyy vielä ihmetellä, miten kaikki ovat niin mielikuvituksettomia etteivät osaa itse suunnitella törmäystarkistusta?
Silloin, kun aloittelee ohjelmointia, niin noita juttuja ei vaan aina tajua. Saattaa tuntua vaikealta ymmärtää, kun on ehtinyt pidemmälle, mutta niin se on. Etsiminen on myös yllättävän vaikeaa, jos ei oikein tiedä, mitä hakee.
Selvästi jotain pitäisi vielä tehdä toisin, jotta jo olemassa oleva tieto löytyisi paremmin. Hakusivulle ohjaus viestin lähetyksen asemesta on käyttäjän aliarviointia, ja se ei tule toteutumaan. Mutta eiköhän tässä jotain keksitä...
Alkuperäiseen kysymykseen vastaus: Itse ajattelen aina kaikki 2D-pelin ukot yms. palloina ja lasken niille säteen. Sitten vaan testaan c2 = a2 + b2 (jossa a = ukko1, b = ukko2 ja c on niiden välimatka) lausekkeella onko joittenkin objektien välimatka pienempi kuin niiden säteiden summa!
Tämä on ehkä hitaampi kuin se perinteinen if picturebox1.x < picturebox2.x mutta varmasti paljon parempi!
Muutenkaan en kyllä pelissä käyttäisi pictureboxeja vaan tekisin omat luokat yms..
Laaksonen kirjoitti:
Saattaa tuntua vaikealta ymmärtää, kun on ehtinyt pidemmälle - -
Olen siis tainnut alusta asti olla näitä pidemmälle ehtineitä..? Taisi olla toinen harjoitusohjelmani (käytin Delphiä), jossa neliöt törmäilivät toisiinsa ja ikkunan reunoihin. (Siksi neliöt, että en vielä neljä vuotta sitten jaksanut laskea pallojen kimpoamiskulmia.)
Ja itse aiheeseen: tuo ez:n tekniikka on kunnollisessa pelinteossa varmasti paras yleispätevä järjestelmä tyylin kannalta. Jos sen laajentaa kattamaan soikiotkin, siitä tulee aivan mahtava. Toinen melko hyvä voisi olla kahdeksankulmio, jos sille saisi kivan kaavan. Tietenkin joissakin peleissä on vielä parempi laskea koko tyypin muodolla, mutta se on jo melkoisen mutkikasta.
Soikiolaajennus onnistui muistaakseni yksinkertaisesti kertomalla aa:n, tai b:en soikion korkeudella/leveydellä. Näin ainakin itse sain sen kerran tehtyä.
Miten olisi että tuonne rekisteröinti sivulle lisättäisiin muuta valintanappi. Esimerkiksi kieli jota kyseinen henkilö käyttää / alkaa aikoa käyttämään. Sitten ruksattaisiin vielä minkätyyppisestä ohjelmoinnista kyseinen henkilö on kiinnostunut. Samalla kun tuo vahvistus viesti lähettäisiin voitaisiin lähettää linkkejä kielen ja kiinnostuksien perusteella näihin tuhansia kertoja kysyttyjä kysymyksien topikkeihin.
Ja jos kysyttäisiin vielä onko kyseinen henkilö ohjelmoinut ennen, niin voitaisiin vielä paremmin arvailla mihin topikkeihin linkkejä kannattaisi antaa.
Tai yksi vaihtoehtohan olisi se että uusi jäsen voisi ruksailla myös haluaako lisää tietoa törmäystarkistuksista, tiedostojen kirjoittamisesta / lukemisesta ja niin edelleen.
Linkit kyseisiin topikkeihin voitaisiin lisätä uusien jäsenien profiili sivuille.
Sitten kun käyttäjä olisi lähettänyt esimerkiksi 25 viestiä nuo linkit voisi käyttäjä halutessaan sielä poistaa.
Näin saataisiin estettyä mielestäni hyvin nämä tälläiset aiheet. Samalla nousisi tuo ohjelmointinputkan "taso" josta puhuin jo aikaisemmin tuossa yllä.
Silloin kun keskityttäisiin astetta vaikeampiin ohjelmointi ongelmiin...
pistäkää tekin vain vielä omaa mielipidettä tuosta ehdotuksestani.
Aihe on jo aika vanha, joten et voi enää vastata siihen.