Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

PokeMMO IV Book. Problemen. welke taal?

Pagina: 1
Acties:

  • rayhvh
  • Registratie: Mei 2011
  • Laatst online: 07-11 15:07
Hallo. ik speel een online pokemonMMO spel waarin een van de dingen die je kan doen is pokemon fokken en proberen steeds betere te krijgen. :9

nu als je er heel veel maakt krijg je het probleem dat je niet meet goed onthoud welke waar zat. of welke nou wel of niet goed was. en toen heb ik deze tool gemaakt om het te organiseren.

Afbeeldingslocatie: http://i.imgur.com/7XbfRqu.png

het probleem is dat ik deze tool in visual basic 2010 heb gemaakt. en het volgens mij heel on-efficient gedaan is door mezelf. 8)7

elk listview item(pokemon) heeft zijn eigen sub items. en dat zijn er nu al 17 en worden er nog meer.
dit geeft problemen.

het eerste probleem is dat bijvoorbeeld column 4 van de listview. altijd het 4de sub item laat zien. (in dit geval moest ik dus het subitem "total iv" en het sub item "details" omdraaien zodat de column het juiste liet zien) :F

het tweede probleem is dat als ik nu iets wil toevoegen. bijvoorbeeld een extra "nickname" eigenschap aan
dat ik in me source code alles overhoop moet gooien om die eigenschap als 2de sub item van listview te krijgen... :X

het derde probleem is dat die niet sorteren wilt op column naam (dus bijvoorbeeld van laag naar hoog IV) ;(

hier is de source code voor mensen die me uitleg misschien niet helemaal snappen: 8)7
*snip*

mijn hoofd vraag is nu
1. kan dit makkelijker in visual basic? en hoe ?
2. als dit onhandig is wat ik aan het doen ben. welke taal zouden jullie gebruiken en waar kan ik dat het snelste / makkelijkste leren en maken?


alvast bedankt voor jullie hulp!! 8)

[ Voor 5% gewijzigd door NMe op 30-04-2014 14:06 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

We willen je best helpen maar we gaan hier dus niet je hele broncode doorspitten op dingen die beter kunnen. ;) Ik heb die link dus verwijderd.

Laat hier in het topic zelf even alleen de relevante code zien tussen [code=vb.net]. Dus niet al je code, maar het stukje waar je je twijfels bij hebt. :)

[ Voor 5% gewijzigd door NMe op 30-04-2014 14:08 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • rayhvh
  • Registratie: Mei 2011
  • Laatst online: 07-11 15:07
NMe schreef op woensdag 30 april 2014 @ 14:08:
We willen je best helpen maar we gaan hier dus niet je hele broncode doorspitten op dingen die beter kunnen. ;) Ik heb die link dus verwijderd.

Laat hier in het topic zelf even alleen de relevante code zien tussen [code=vb.net]. Dus niet al je code, maar het stukje waar je je twijfels bij hebt. :)
oke ehm.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
   
                 If IO.File.Exists(mySaveFile) Then '// check if file exists.
            Try
                Dim mySaveFileLines() As String = IO.File.ReadAllLines(mySaveFile) '// load your file as a string array.
                For Each line As String In mySaveFileLines '// loop thru array list.
                    Dim lineArray() As String = line.Split("#") '// separate by "#" character.
                    Dim pokemon As New ListViewItem(lineArray(0)) '// add text Item.
                    pokemon.SubItems.Add("Nature") '1
                    pokemon.SubItems(1).Text = lineArray(1)
                    pokemon.SubItems.Add("Gender") '2
                    pokemon.SubItems(2).Text = lineArray(2)
                    pokemon.SubItems.Add("TOTALMAX") '3
                    pokemon.SubItems(3).Text = lineArray(3)
                    pokemon.SubItems.Add("HPMIN") '4
                    pokemon.SubItems(4).Text = lineArray(4)
                    pokemon.SubItems.Add("HPMAX") '5
                    pokemon.SubItems(5).Text = lineArray(5)
                    pokemon.SubItems.Add("ATTKMIN") '6
                    pokemon.SubItems(6).Text = lineArray(6)
                    pokemon.SubItems.Add("ATTKMAX") '7
                    pokemon.SubItems(7).Text = lineArray(7)
                    pokemon.SubItems.Add("DEFMIN") '8
                    pokemon.SubItems(8).Text = lineArray(8)
                    pokemon.SubItems.Add("DEFMAX") '9
                    pokemon.SubItems(9).Text = lineArray(9)
                    pokemon.SubItems.Add("SAMIN") '10
                    pokemon.SubItems(10).Text = lineArray(10)
                    pokemon.SubItems.Add("SAMAX") '11
                    pokemon.SubItems(11).Text = lineArray(11)
                    pokemon.SubItems.Add("SDMIN") '12
                    pokemon.SubItems(12).Text = lineArray(12)
                    pokemon.SubItems.Add("SDMAX") '13
                    pokemon.SubItems(13).Text = lineArray(13)
                    pokemon.SubItems.Add("SPEEDMIN") '14
                    pokemon.SubItems(14).Text = lineArray(14)
                    pokemon.SubItems.Add("SPEEDMAX") '15
                    pokemon.SubItems(15).Text = lineArray(15)
                    pokemon.SubItems.Add("TOTALMIN") '16
                    pokemon.SubItems(16).Text = lineArray(16)
                    pokemon.SubItems.Add("Details") '17
                    pokemon.SubItems(17).Text = lineArray(17)
                    PokemonList.Items.Add(pokemon) '// add Item to ListView.

                Next
            Catch ex As Exception
                MsgBox("Error loading save")

            End Try
        End If


dit is als de applicatie laad. je ziet dat ik hier (uit een string array van een txt file met for each line loop.)
de listview items aanmaak.
nu heb ik al "Details" en "TOTALMAX" omgeruild zodat ik TOTALMAX in de 4rde column kreeg.. maar als ik nu een ander iets wil invoegen in bijvoorbeeld de 2de column. moet ik alles 1 rij opschuiven. of 2 dingen omruilen / door elkaar gooien..

ik zoek dus eigelijk naar een goede manier om dit programma correct te maken. of een andere betere taal waar dit wel goed werkt als dit in Visual basic niet makkelijk is.

nogmaals bedankt

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 09:57
Het herhalende gedeelte kun je in een functie stoppen waarbij je met de parameters vast iets slims kunt doen.
Volgens mij is het trouwens zo dat SubItems.Add het ListViewSubItem(?) retouneert, die je kunt gebuiken om de tekst toe te kennen, ben je al 1 afhankelijkheid kwijt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • rayhvh
  • Registratie: Mei 2011
  • Laatst online: 07-11 15:07
dus je bedoelt
Visual Basic .NET:
1
     pokemon.SubItems("Details").Text = lineArray(17)  

dat werkt niet. dat heb ik geprobeerd. het moet de integer zijn van de plek waarop het sub item zich bevind. ;(

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zou sowieso eens beginnen met te inheriten van ListViewItem en een fatsoenlijk model te maken i.p.v. een array te gebruiken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Definieer PokeModel
public class MyPokeModel 
  public property Name as string
  public property Nature as string
  public property Gender as PokeGenderEnum
  ...
end class

// Inherit van ListViewItem
public class MyPokeDingesListviewItem Inherits ListViewItem
  // Referentie naar model
  public property PokeDinges as MyPokeModel

  // Instantieer een MyPokeDingesListviewItem en vul meteen alle subitems door de base aan te roepen
  // Zie http://msdn.microsoft.com/en-us/library/faw83h4f(v=vs.110).aspx voor de specifieke overload
  Constructor MyPokeDingesListviewItem(MyPokeModel model)
    :base(model.Name,
             model.Nature,
             model.Gender.ToString,
             ...
             )
    // Sla referentie naar model op
    Me.MyPokeModel = model
  end constructor
end class

Main()
  // Open de file
  Dim MyPokeFile = OpenFile("pokedinges.dat")
  // Vul lijst met poke-dingen
  For Each line in MypokeFile
    MyListView.Items.Add(ParseLineToPokeModel(line))
  Next
end main

//... of misschien nog mooier:

Main()
    // Open de file en vul lijst
    MyListView.Items.AddRange(
        OpenFile("pokedinges.dat")
            .ReadAllLines(l => ParseLineToPokeModel(line))
            .OrderBy(m => m.Name)
    )
end main


Maakt je code duizend keer leesbaarder, je zit nergens te frotten met je array indices maar gewoon fatsoenlijke (property) namen en bij een on-item-click kun je gewoon het (Listview.SelectedItem as PokeModel).PokeDinges gebruiken om de instance van het betreffende model op te halen en die weer gebruiken om z'n properties e.d. op te halen en in de tekstboxes en andere controls weer te geven (of nog leuker: fatsoenlijke databinding gebruiken).

offtopic:
Heel die If IO.File.Exists(mySaveFile) Then ... zou ik lekker achterwege laten; je kunt namelijk prima een split second na die check de file verwijderen waarna de IO.File.ReadAllLines(...) alsnog *boem* gaat doen. Je hebt 't toch al in een Try...Catch... staan. Ik zou alleen wat minder "breed" exceptions vangen; i.p.v. een "Exception" catch je beter gewoon expliciet de FileNotFoundException, IOException en evt. andere exceptions waarin je geïnteresseerd bent; de rest laat je gewoon doorbubbelen en je applicatie nekken (nadat je logged wat die crash veroorzaakte).

[ Voor 61% gewijzigd door RobIII op 30-04-2014 15:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • rikkert278
  • Registratie: Februari 2010
  • Laatst online: 13-06-2024
NMe schreef op woensdag 30 april 2014 @ 14:08:
We willen je best helpen maar we gaan hier dus niet je hele broncode doorspitten op dingen die beter kunnen. ;) Ik heb die link dus verwijderd.

Laat hier in het topic zelf even alleen de relevante code zien tussen [code=vb.net]. Dus niet al je code, maar het stukje waar je je twijfels bij hebt. :)
Kun je link misschien terug plaatsen? Ik ben erg benieuwd naar de broncode, zou er graag eens een kijkje in willen nemen.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Schravendeel schreef op woensdag 30 april 2014 @ 22:26:
[...]


Kun je link misschien terug plaatsen? Ik ben erg benieuwd naar de broncode, zou er graag eens een kijkje in willen nemen.
Wat is er niet duidelijk aan NMe's bericht? We zijn geen afhaalchinees waar men even zijn/haar code kan neerplempen zodat anderen 't dan lekker voor hem/haar kunnen debuggen/oplossen waarna hij/zij de oplossing kant-en-klaar-voorgekauwd-en-wel aangedragen krijgt op een zilveren presenteerblaadje.
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.

[ Voor 9% gewijzigd door RobIII op 30-04-2014 22:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • rikkert278
  • Registratie: Februari 2010
  • Laatst online: 13-06-2024
RobIII schreef op woensdag 30 april 2014 @ 22:37:
[...]

Wat is er niet duidelijk aan NMe's bericht? We zijn geen afhaalchinees waar men even zijn/haar code kan neerplempen zodat anderen 't dan lekker voor hem/haar kunnen debuggen/oplossen waarna hij/zij de oplossing kant-en-klaar-voorgekauwd-en-wel aangedragen krijgt op een zilveren presenteerblaadje.


[...]
Is het zo kort door de bocht dat ik ook PokeMMO speel, bekwaam ben in C# en VB.NET en zo'n programmaatje verrekte handig vind? Daarnaast wil ik graag de code bekijken om deze zelf te compileren (en dan dus ook te gebruiken) en om te kijken hoe deze meneer programmeert. Ben zelf (nu al bijna 10 jaar geleden) begonnen in VB.NET en als ik oude code van mij lees lig ik af en toe echt in een deuk. Dingen zoals

Visual Basic .NET:
1
2
3
4
If condition Then
Else
'Code
End If

komen weer helemaal terug.

Ik beloof plechtig dat ik geen van de door mij (mogelijk) gefixte code zal doorspelen aan deze meneer.
Pagina: 1