|
|
Olyan problémába ütköztem, tekintve hogy 30 perce ismerkedem a VB-vel, hogy random szám generálás után elmentem azt egy integer változóba, majd szeretném megváltoztatni a kapott random szám IDs buttont.
Kód: Public Function Rand(ByVal Low As Long, _
ByVal High As Long) As Long
Rand = Int((High - Low + 1) * Rnd()) + Low
End Function
Private Sub compeasymove()
i = Rand(1, 9)
Button(i).text = "O")
End Sub
próbáltam keresni googleval, de feladtam, vagy nem lehet ilyet csinálni, vagy annyira egyszerűen hogy senkibe nem merült fel ez a kérdés kivételt bennem
C++ról váltottam VB-re, mert win32 programozás már nem ment, és olvastam, hogy VB segíthet az alapok átdolgozására, majd még egy kis Flash tanulás után könyebbé válik a C++.
Ezt a hozzászólást Tusk módosította (2010.07.08 16:22 GMT+1 óra, ---)
|
|
|
Csak semmi játékfejlesztés!
|
|
|
Idézet levi1224 :
Köszi, de mi az a ban?
Az az amit a jó gyerekek kapnak karácsonyra.
|
|
|
Idézet levi1224 :
Köszi, de mi az a ban?
Ne tudd meg... 
Egyébként ez a Te honlapod? http://facsasoft.uw.hu/index.html/
Most akkor "programozás felsőfokon" vagy "kérdezgetés felsőfokon" ?
Klikk, a JF.hu bulvárlap.
Klikk #6 WIP: 30% (Kuz, sade, ramoryan...)
|
|
|
|
Levi1224:
a - Minimum hogy kérjél, ne utasíts, de hidd el nekem hogy amit linkeltem példát, azon elindulva már gyönyörűen össze lehet hozni amit szeretnél, csak törni kéne picit a fejedet. Ennél többet sztem ne várj, nem fogja senki megcsinálni helyetted amit szeretnél, nem azért mert nagy meló, csak így soha nem fogsz megtanulni semmit ha a sült galambot várod.
b - Ha az alapokkal nem vagy tisztában akkor érdemes lenne inkább azokkal kezdeni. Mi az hogy lőjön pontokat?!?!?! a "lövés" program szempontból a következő, kirajzolsz egy helyre egy pontot és adott időközönként letörlöd és egy picit odébb újra kirajzolod... olyan parancs nincs a VB-ben hogy picture1.lövés.pontokat(balra).
|
|
|
a, Valaki írjon nekem vb6-ban egy nagyon alap maszkolásos progit, de mozgatni lehessen, és jó sok magyarázat legyen benne
b, Szerintetek hogy lehet megoldani azt, hogy van egy player picturebox-om és az lőjön pontokat.
|
|
|
Köszi neked is, de te készítesz valami játékot?
Mikor lesz a következő verseny, mert sajnos későn tudtam meg és nem lettem kész.
|
|
|
Böngészőprogramnak nevezünk minden olyan programot amely képes weboldalakat megjeleníteni. Ha ezt a definíciót vesszük alapul, akkor sajnos az Internet Explorert nem nevezhetjük böngészőnek. Ennek ellenére sokan használják weblapok nézegetésére.
|
|
|
|
Sima bitblt-vel:
http://www.vbforums.com/showthread.php?t=271014
Google a barátod.
Első eredmény a "Visual basic bitblt mask" keresésre. 
Kicsit lejjebb van egy egyszerű példaprogi.
Transpblt-vel
Meg lehet játszani hogy egy színt kiválasztasz és azt maszkolja ki a képről, de az dög lassú, szóval játéknál nem valami optimális ha sokat kell használni. Itt van rá egy példaprogi...
698-transblttest.zip
ott van még a getpixel/setpixel de azt inkább hagyjuk
DirectX-hez meg nem értek..
|
|
|
|
Hali
Segítség kellene egy maszkolást megcsinálni vb6-ban.
Azért annyit tudok, hogy kell egy maszk kép + a kép amit maszkolni kell.
|
|
|
A windows API-ban van ilyen, hogy SendMessage(...); gondolom vb alá is van megfelelöje.
|
|
|
Egy virtuális numpad-ot akarok összedobni de sehol semmi használhgató help a neten. Az a baj hogy régi vb-s sendkeys -t vista fölött tiltja a windows. Állítólag .net-ből megy de nincs olyan a közelben. Api-val kéne kiváltani, keybd_event -el próbálkozom de totál sikertelenül, esetleg valaki konyít hozzá?
|
|
|
Mint mondottam, én azért hoztam be az oop-t, mert azt hittem, hogy a feladatot akarja string tömbökkel megoldani, holott csak a string tömb létrehozást gyakorolta. Szóval én csak azt akartam neki sugallni, hogy a feladat megoldásához jobb az oop szemlélet, de most már látom, hogy félreértettem a kérdését.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???
|
|
|
Oké, oké, nagyon helyes, hogy oop szemléletbe szokik bele, én csak magamban sóhajtoztam, hogy milyen öreg is vagyok (mert én már sose fogom megszokni)... 
Klikk, a JF.hu bulvárlap.
Klikk #6 WIP: 30% (Kuz, sade, ramoryan...)
|
|
|
Az elején én is ezt mondtam de rábeszélték és most már oop kódot másolt be
|
|
|
Ha jól értem a problémát, akkor itt egy szimpla tömb-definiálásról, és a tömbelemekre való hivatkozásról van szó. Sose fogom megérteni, hogy ehhez minek oop-t meg .net-et meg mindenféle divatos fityfirittyet bekeverni?... 
Persze én reménytelenül struktúrált felfogású vagyok. 
Klikk, a JF.hu bulvárlap.
Klikk #6 WIP: 30% (Kuz, sade, ramoryan...)
|
|
|
Nem azt irta, hogy vb .net?
|
|
|
|
Annyira szeretem hogy a legegyszerübb dolgokat is ugy tudjátok elmagyarázni, hogy még én sem értem
Kód: Public Class Form1
'itt deklarálunk egy stringeket tartalmazo 4 elemü tömböt
Private csapatok(4) As String
'és egy x nevü változot
Private x As Integer = 2
Private Sub Form1_Load(...) Handles MyBase.Load
'megadjuk a tömb elemeit
csapatok(0) = "FTC"
csapatok(1) = "UDP"
csapatok(2) = "TCP"
'beállitjuk a cimke szövegét
Label1.Text = csapatok(0)
'hasonloan müködne igy is
Label1.Text = csapatok(x)
End Sub
End Class
|
|
|
FAIL Első hiba
Értéket megadni a változóknak sub-ban lehet... így:
Kód: dim x as byte
Private Sub form_load()
x=3
end sub
Szerk: Pontosítok. Így lehet megadni sub-on kívül értéket. Ennek értelmében változik az egész hozzászólásom. Elnézést, csak soha nem szoktam ezt használni. Persze ez konstans, nem változó, de ha nagyon akarod akkor használhatod ezt.
Kód: Private Const x As String = 4
Második hiba:
ahogy te csináltad úgy a csapat1 egy változó neve, nem pedig egy tömb, amiből késöbb szeretnéd kiszedni az x-edik értéket. És ne feledd hogy 0-val kezdődik a tömb.
Kód: dim csapat(2) as variant
Private Sub Form_load()
csapat(0)="UTE"
csapat(1)="FTC"
csapat(2)="ETO"
end sub
Harmadik hiba:
Label-eknek caption az amibe írsz, textboxoknak meg text.
Ez már annyira nem vészes de így lehet helyes:
Kód: Private Sub Command1_click()
label1.caption=csapat(x)
'vagy
text1.text=csapat(x)
End sub
Hát ebben a rövid kis kódban nem is lehetne többet véteni.
Van még mit forgatni azon a könyvön, bár sztem érdemesebb lenne ha az alap dolgok megvannak akkor inkább más programokat nézegetni és próbálgatni. Meg beirogatni ezt a sok marhaságot vb-be mert egyből kipirosítja hogy nem jó.
Szerk: Mellesleg ott az előző post-omban a forráskód, abból is ki lehet okoskodni.
Ezt a hozzászólást Bacce módosította (2010.02.04 12:02 GMT+1 óra, ---)
|
|
|
Itt egy egyszerű példa:
Dim x as byte=3
dim csapat1 as string="UTE"
dim csapat2 as string="FTC"
dim csapat3 as string="ETO"
label1.text=csapat(x)
Hogy kéne tömbösítenem a fenti példát, hogy a label1 -nél értse az X-et ?
Mert ugye most elvileg az "ETO"-t kéne oda írnia, de nem érti...
Előre is köszi
|
|
|
Jók ezek az ujjgyakorlatok, küldetés teljesítve. 
Kód+progi, ahogy én gondolom... nyilván van jobb megoldás is, nem oop, csak ciklus meg if, néhány variant és hopp, így lett a csokapik.
698-sorbarako.zip
Amúgy itt találsz algoritmusokat vb kóddal mellékelve ha komolyabban bele akarsz mélyedni.
|
|
|
Itt van egy VB <-> C# konvertáló.
Szrintem nem kell megadni az elemek számát, ha egyszer már fel is vannak sorolva:
Kód: Dim csapatok() As String = {"Penguins", "Tigers", "Elephants", "Eagles", "Dogs", "Cats"}
|
|
|
Mert vb-t már régen használtam, azé'.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???
|
|
|
Meg azt se értem, hogy miért c# kódot irsz a vb topicba  Buli volt este?
|
|
|
A feladat komplexebbnek tűnik, mintsem hogy egyszerű stringkezeléssel legyen elintézve. Ha ez így nehéz, akkot a feladat túl nehéz, nem? Rosszul megoldani valamit, és azt begyakorolni nem a legjobb. Nem kell látnia még most, hogy mi zajlik az osztályokkal való munka mögött, ha már tudja hogy kell megcsinálni egy alap osztályt, abból példányosítani és azt használni alap szinten, az már bőven elég. Később úgyis megismeri azt mélyebb szinten. Szerintem.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???
|
|
|
Szerintem nem kéne oop-vel szivatni 
Elöször az alap fogalmakkal legyen tisztában: változó, azonosító, tömb, stb. rengeteg van.
|
|
|
Az osztály fogalmát guglizd ki. Nagyban segíteni fog, ha már a tervezésnél osztályt használsz, és nem string tömböt minden külön adatra. Így egy osztályban összefoglalhatod az összetartozó adatokat (mint ahogy lent is írtam, a helyezés, a pontszám). De ha mindezt tömbökkel akarod megcsinálni...Hát...Inkébb nézd meg, mit jelent az osztály, a példányosítás, a példány, szóval az oop lényege.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???
|
|
|
Hú ez nekem kínai...  , de azért köszi, hogy segíteni próbálsz.
Megpróbálom ezt a tömbbös dolgot, csak közben olvasgatom a kék könyvet....
Stringeket is lehet tömbbe rakni? , mert nekem nem igazán szereti ezt:
Dim csapatok(6) As String = {"Penguins", "Tigers", "Elephants", "Eagles", "Dogs", "Cats"}
|
|
|
Kód: //kissé elnagyolt és C#-os szintaktikával (majd átírod, ha kell)
Class csapat
{
int o_iHelyezes;
int o_iPontSzam;
...
public int PontSzam
{
get{return o_iPontszam;}
set{o_iPontSzam = value;}
}
...
}
...
list<csapat> csapatok = new list<csapat>();
csapatok.add(...);
...
public void SortCsapatokByPontszam(ref csapatok p_cCsapatok)
{
p_cCsapatok.Sort(delegate(csapat cs1, csapat cs2)
{
return cs1.PontSzam.CompareTo(cs2.Pontszam);
});
}
...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???
|
|
|
A public classban van minden deklarálva..
Hogyan tegyen tömbbe őket?
pl.:
Dim csapatok(6) As String = {"Penguins", "Tigers", "Elephants", "Eagles", "Dogs", "Cats"}
explicit....
Ezt a hozzászólást Smallone módosította (2010.02.02 06:30 GMT+1 óra, ---)
|
|
|
A baj az, hogy a változó nevét nem lehet kiszámolgatni
csak úgy hivatkozhatsz rá, hogy pont1, pont6, stb( pont(x)-ként nem... ), ha meg akarod adni, hogy x elem közül hányadik kell, akkor tegyed tömbbe azokat az elemeket...
|
|
|
Szerintem vágd be a rendezés kódját, úgy mindenki könnyebben tud segíteni. 
Amúgy hol deklarálod a pont-ot, mint tömböt?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???
|
|
|
Sziasztok,
még kezdő vagyok vb.net-tel küzdök egy progit...
Szeretnék egy egyszerű sorbarendezést csinálni, de nem jön össze.
Van 6 elemem (byte-ok) pont1, pont2, pont3, pont4, pont5,pont6 néven.
Ezeket szeretném sorba rendezni , a legnagyobb legyen legelől.
Amikor megcsinálom a ciklust, nem érti, hogy mi a
pont(i)
Azt írja, hogy name pont is not declared , de miért nem érti, hogy én a ciklusban pl.: a pont1-es szeretném összehasonlítani valamivel...
Valaki segítsen, köszi.
Dim b As Byte = 6
For i = 1 To b
For d = 1 To b - 1
If pont(d) > pont(d + 1) Then tabella(d) = tabella(d - 1)
Next
Next
Egy Tabellát szeretnék csinálni, ahol
vannak csapat1, csapat2,csapat3,csapat4,csapat5 és csapat6 - ezek a csapatnevek
pont1,pont2,pont3,pont4,pont5,pont6 - ezek a csapatpontok
tabella1, tabella2,tabella3,tabella4,tabella5, tabella6 - ez a tabellán lévő csapatnevek
tabellap1,tabellap2,tabellap3,tabellap4..... - ezek a tabellán lévő csapatpontok
Ezt a hozzászólást Smallone módosította (2010.02.02 06:20 GMT+1 óra, ---)
|
|
|
VB6-ban hogyan lehet egy string teccőleges mennyiségű karakterét levágni balról? Iszonyat fontos lenne és már nem fog az agyam ;(
Áh mind1 már megis oldottam.
Ezt a hozzászólást Bitsculptor módosította (2010.02.01 03:02 GMT+1 óra, ---)
|
|
|
Ha spórolni akarsz a maszkok rajzolásával akkor csináld keverve, bár nem nagy művészet megcsinálni ha már így is ki van színezve a képeden amit maszkolni kell, kódban is csak egy sorral több, helyet se foglal sokat ha a maszkot 2bit-es bmp-be mented, de ezzel szemben sokkal gyorsabb. Bár nem alkalmas a képek átméretezésére amire a TransparentBlt igen.
Ezt a 0,0-t még mindig nem értem. Nem lehet hogy valamit kihagytál deklarálásnál?
Kód: Private Declare Function TransparentBlt Lib "msimg32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal SrcWidth As Long, ByVal SrcHeight As Long, ByVal TransparentColor As Long) As Long
Így kéne kinézzen... csak azért mert megírtam egy kis progit és megy, meg írtad hogy autoredraw és cls nélküli megoldást szeretnél hát íme. Jó szórakozást.
Itt a progi kóddal meg fordított exe-vel: 698-transblttest.zip
|
|
|
Nem maga a maszkolás a baj, hanem hogy minden képhez kell csinálnom maszkot, vagyis sprite * frém új képet amit be is kell bufferelni meg ilyenek..bleah
transparentblt tényleg lassabb, de a 0,0 az tényleg így van, bármikor lehet reprodukálni, próbáld ki.
Stretchblt igen az nyújtásra való, és egyben tud transperenciát is.
|
|
|
meg a transparentblt eléggé lassú is, szóval komlyabb dolgokra nem való, bár ezt a 0,0-t nem tudom, sztem nézz egy kicsit jobban utána mert erősen kétlem. 
A stretchblt az mire való? Gondolom átméretezni valami képet.
A maszkolástól meg nem kell félni.
|
|
|
Lehet, hogy nekem is kéne írnom egy saját osztályt a problémára. Jelenleg egy letöltött (má nemtom honnan) bitmap class-t használok ami ezeket is tartalmazza, meg hozzáadtam pár grafikai funkciót (Bitblt, TransparentBlt, StretchBlt, GetPixel, SetPixel). Attól tartok sokminden van itt ami nekem nem is kell, csak a memóriát meg helyet foglalja.. viszont amit szeretnék, hogy egy picturebox-on levő háttérképen tudjak transparent sprite-okat mozgatni, mégpedig minden nemű cls vagy refresh vagy autoredraw nélkül.
A bitblt-el az a baj, hogy maszkolni kell ha átlátszó színt is akarsz hozzá, a transparentblt-el pedig az, hogy bár átlátszó a megfelelő szín, de csak akkor jelenik meg a teljes sprite, ha a bal felső sarka > 0,0.
Lehet kénytelen leszek maszkolni
|
|
|
Nekem akkor jött elő ilyen problémám mikor picturebox-okon relative nagy (3000x2000 px-es) képekkel zsonglőrködtem.
Aztán olvastam hogy érdemes úgy csinálni hogy megcímzed a memóriahelyet és egyenesen oda rakod fel a képet és nem a form-ba hívod be, minden rajzolást a memóriában végzel és csak a végeredményt rakod ki az ablakba és folyamatosan frissíted egy timerrel, így szükségtelen az autoredraw, ami egyszerűbb feladatokra tökéletes de bonyolultabb dolgoknál lehal tapasztalatom szerint.
Kód: Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
'Memóriából címzések törlése
Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Ezekben érdemes kicsit elmélyedni. Én is az utóbbi pár hónapban ástam magam bele. 
Szerk: Vagy stdPicture, de ezt így én még nem használtam, erről nem tudok nyilatkozni.
Ezt a hozzászólást Bacce módosította (2010.01.12 08:51 GMT+1 óra, ---)
|
|
|
Azon tűnődöm, vajon mitől lehet az, hogy egy programot elindítok x alkalommal és x+1 alkalomra azzal a hibaüzenettel kifagy, hogy "can't create autoredraw image".. feltételezem, hogy vmilyen buffer-t ki kéne üríteni, node melyiket? egy sima bitblt-et használó progiról van szó..
|
|
|
nm
a me.show garantálja, hogy a program fókuszt kapjon, enélkül a form_load nem hív meg semmit, vagy nem rendesen.
Másik:
ha nem a form_load-ba írsz hanem...talán form_activate -be... van ilyen?  mind1 vmi ilyesmi.
|
|
|
Besza... tényleg működik ez a me.show, soha nem jöttem volna rá. 
Bár azóta letettem erről a megoldásról mert zabálja a procit, maradt az original timer control de azért köszi.
|
|
|
Lehet, hogy nagy hülyeség és látszólag nincs köze hozzá, de nekem vmikor megoldódnak az ilyen problémáim ha a legelső sorba beírom hogy me.show, meg az autoredraw-t enabled-re állítod.. nemtudom miért, de tényleg a timer-es dolgoknál meg minden ciklusszerűségnél működik.. bár most álmos vok és nem biztos hogy nem írtam hatalmas hülyeséget
|
|
|
Már visszabontottam a kódot az alapokig és a következő a probléma:
Ha Form_load-al indítanám ezt a "timerszerűséget" akkor nem csinál semmit, de ha valami más eseményhez kötöm, pl. click akkor meg megy szépen... nah, az a kérdés hogy hogyan tudnám ezt kiküszöbölni hogy kattintani keljen az indításnál?
Kód: Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim t1 As Long, t2 As Long
Sub RenderTimer()
t2 = GetTickCount
Do
DoEvents
t1 = GetTickCount
If (t1 - t2) >= 10 Then
'kóóóód
t2 = GetTickCount
End If
Loop
End Sub
Private Sub Form_Load()
RenderTimer
End Sub
Szerk: Más, melyik a gyorsabb? Bitblt mask-al vagy TransparentBlt szín kimaszkolva?
Előre is köszönöm a segítséget.
Ezt a hozzászólást Bacce módosította (2010.01.10 06:17 GMT+1 óra, ---)
|
|
|
Nah nem éppen játékfejlesztés de hátha valaki tud segíteni...
OLE drag and drop... szövegeket szeretnék egy ablakból átdobálni más ablakokba...
namármost amikor pl. word-be dobom akkor rendben is van, de mikor pl a windows futtatás ablakába akkor két "macskaköröm" közé rakja.. de azt is csak akkor ha van a szövegben szóköz... jah, és egy fájlból olvassa be amúgy a szöveget, ott természetesen nincs macskaköröm... Bááh... már kattogok befele...
Szerk: Itt van ki lehet próbálni...
698-dobogep.zip
Ezt a hozzászólást Bacce módosította (2009.04.25 02:21 GMT+1 óra, ---)
|
|
|
Kód: SELECT * FROM vonatok WHERE indulás > 12 AND indulás < 15;
viccet félretéve: ha adatbázisról van szó akkor érdemesebb az ö felületét használni;
de valahogy az az érzésem hogy nem ilyen egyszerü a helyzet szal pontosits pls
|
|
|
Legújabb project:
Smashed Potatoes
Legutóbb frissített project:
Smashed Potatoes
Friss kép a galériából:
|