View previous topic :: View next topic |
Author |
Message |
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 7:41 am Post subject: Pat nezinu kā lai to nosauc |
|
Man ir sekojoša problēma: man spēlē jāievieto vairāki ieroči, vismaz 10+. Problēma ir tur, ka man nav ne jausmas kā organizēt kodu lai ieročus un to parametrus būtu ērti glabāt un izsaukt vajadzības gadījumā.
Pašu ieroča data tipu es uzrakstīju šādi:
Code: | Public Structure Gun
Dim Name as String
Dim Damage As Integer
Dim Weight As Integer
Dim Durability As Integer
Dim Range As Integer
Dim Accurasy As Integer
Dim Price As Integer
End Structure |
(spēle RPG tipa tāpēc tādi ieroču parametri man pilnībā apmierina)
Gribētos visu informāciju par ieročiem salikt vienā moduli, un vajadzības gadījumā izsaukt. |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Feb 22, 2007 8:44 am Post subject: |
|
Ir tur pieejami arrayi? |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 8:45 am Post subject: |
|
Jā, piemēram:
Code: | Dim myArray(100) as Integer |
|
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Feb 22, 2007 8:48 am Post subject: |
|
Tad jau var vienkārši izveidot array`u tai struktūrai. Ja ieroci ievietoti nemainīs kārtību u.tt tad ērtibas labad var vel katru to skaitli nodefinēt ar kādu nosaukumu. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 8:51 am Post subject: |
|
Kā tas apmēram izskatās - katru skaitli nodefinēt ar savu nosaukumu ? |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Feb 22, 2007 8:53 am Post subject: |
|
Uz c++ tas ir šādi:
Code: |
#define GUN_ONE 0
#define GUN_TWO 1
|
ir vēl enumeration, bet nezinu vai tev tur viņi ir pieejami. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 8:56 am Post subject: |
|
Enum arī ir Es lietoju Visual Basic 2005
Es uztaisīju šādi:
Code: | Public Sub Weapons()
'Glock-18
Weapon(1).Name = "Glock-18"
Weapon(1).Accurasy = 90
Weapon(1).Damage = 5
Weapon(1).Durability = 20
Weapon(1).Price = 3500
Weapon(1).Range = 2
Weapon(1).Weight = 2
End Sub |
Tikai sanāk, ka lai inicializētu ieročus man ir jāizsauc tass Subs programmas sākumā. Tas ir normāli ? |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Feb 22, 2007 9:12 am Post subject: |
|
Nezinu gluži vai tas ir normāli[neesmu visual basic savā mužā lietojis].
Tik varu uzrakstīt kā tas c++ izskatītos:
Code: |
struct Gun {
std::string strName;
int nDamage;
int nDurability;
int nRange;
int nAccuracy;
int nPrice;
};
...
Gun Weapons[10];
// Pievienojam visus atributus
Weapons[0].strName = "Glock-18";
Weapons[0].nAccuracy = 90;
Weapons[0].nDamage = 5;
...u.tt
|
respektīvi visus atribūtus var initializēt jebkurā vietā iznemot pašu struktūru, ja pareizi sapratu problemu... |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 9:17 am Post subject: |
|
Cik es zinu Beisikā nevar vinkārši paņem un uzrakstīt ka Weapon.Damage = 5
Tam obligāti jābūt kadā procedūrā (tā laikam tas sacas C++), tāda procedūra manā gadījumā ir Form_Load()
Kur es ielieku Call LoadWeapons() un tad visi ieročū parametri tiek ielādēti atmiņā. Principā viss darbojas. Droši vien ir labāks veids kā to visu izdarīt, bet man pašlaik ir galvenais lai darbojas |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Feb 22, 2007 9:23 am Post subject: |
|
Nu jā c++ ta vienkārši arī nevar un tam jābūt kādā funkcijā kuru pēctam izsauc. Bet ideja pati nemainās. Šaubos, kad ir labaki veidi ja taisa predefinētus parametrus tikai pāris fičas atšķirtos ja veidotu dinamisku to visu. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 9:26 am Post subject: |
|
Es pat negribu domāt kā es jūgšos ja salikšu savā spēlē daudz ieroču |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Feb 22, 2007 10:45 am Post subject: |
|
Saraksti visu failā, piemēram:
Code: | Glock-18;90;5;20;3500;2;2
Automāts;666;50;100;2000;1;10
... |
Tb vērtības atdali ar semikoliem, katru ieroci raksti jaunā rindiņā.
Šādu failu tu vari atvērt OpenOffice.org Calc vai MS Office Excelī, un rediģēt vērtības pa rūtiņām. Šādu faila formātu sauc par CSV.
Tad atliek programmā uzrakstīt faila ielādi un vērtību salikšanu masīvā. Vienkārši, vai ne?
Sarežģītākiem datiem nepietiks ar csv, bet vai nu vajadzēs domāt savu faila formātu (un rakstīt editoru tam), vai arī izmantot kautko jau izdomātu, piemēram XML. Kaut arī iesaku neko sarežģītu nelikt XMLā - tā ielāde ir ĻOTI lēni. Vienkāršiem xml failiņiem, piemēram opciju uzstādījumiem, xmls ir ok, taču sarežģītākām datu struktūrām iesaku uzrakstīt mazu konvertētāju no xml uz kādu savu izdomātu bināru formātu. |
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 4:54 pm Post subject: |
|
Kā apmēram varētu izskatīties funkcija kura var nolasīt
Code: | Glock-18;90;5;20;3500;2;2 |
un salikt to pa mainigajiem? Es diemžēl neprotu izmantot "krutās" string manipulācijas
Taisīt katram ierocim savu txt failu kur glabātos 1 cipars es negribu |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
|
Back to top |
|
|
Inf3rnal
Joined: 15 Jun 2006 Posts: 118 Location: Neverland
|
Posted: Thu Feb 22, 2007 7:15 pm Post subject: |
|
šī ir nereāli labā - uzreiz atrkīt vairākas neērtības!
Code: | Dim TestString As String = "Look at these!"
Dim TestArray() As String = Split(TestString) |
Liels paldies! Es saīsināju savu kodu par kkur 50 rindiņām. |
|
Back to top |
|
|
|