Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Kretslopp - programmering hjälp!

Skapad av harddrive, 2010-12-29 16:01 i Webbutveckling & Programmering

972
18 inlägg
0 poäng
harddrive
Visningsbild
P 32 Vara Hjälte 2 779 inlägg
0
Jag har 4 vapen i mitt spel och jag har gjort att jag kan byta mellan alla 4 genom att trycka på en knapp.

variabler =
harvapen1, harvapen2, harvapen3, harvapen4

Just nu ser det ut som så:

Om vapen1 är equippat, om harvapen2 finns = equippa vapen 2
else
Om vapen2 är equippat, om harvapen3 finns = equippa vapen 3
""
Om vapen3 är equippat, om harvapen4 finns = equippa vapen 4
""
Om vapen 4 är equippat, om harvapen1 finns = equippat vapen 1

Det fungerar ju prima att "rotera" mellan alla dessa vapen.
Men problemet jag har är att jag behöver komma på ett bättre system.. för just nu, om jag har sätter "harvapen2" till 0 så går den inte 1 3 4 utan fastar på "ettan" och vägrar ta nästa möjliga vapen.

Hur gör jag? Lite noob, så inget komplicerat haha xD
Jag kan ju göra alla möjliga "lösningar" men det blir ju aslångt och onödigt.

Ingen status

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0

Svar till harddrive [Gå till post]:
enklaste jag kommer på är
if(vapen1 equippat){
if(harvapen2){
equippa vapen 2
}else if(harvapen3){
equippa vapen 3
}else if(harvapen4){
equippa vapen 4
}
else if(vapen2 equippat){
....
}

Ingen status

harddrive
Visningsbild
P 32 Vara Hjälte 2 779 inlägg
Trådskapare
0
Svar till gaminggirl [Gå till post]:
Jag får testa.. men det blir ju det där långa sättet ändå men tack!
Återkommer

Ingen status

Anonymmedlem
Visningsbild
Bitter 9001 inlägg
0
Rekursiv funktion som kollar om nästa finns annars anropa igen +1, när den når max återställer den räknaren till 0.
harddrive
Visningsbild
P 32 Vara Hjälte 2 779 inlägg
Trådskapare
0
Svar till moodh [Gå till post]:
ajaj, har tyvärr ingen aning om hur man gör
jag latar mig och kör på långa sättet..


Ingen status

pr0n
Visningsbild
P Hjälte 5 588 inlägg
0

Svar till harddrive [Gå till post]:

Vet inte vilket språk du kodar i så skrev ett litet snabbt test i Java, men jag vet inte om det fungerar. Fast fungerar det inte så ska det bara vara att ändra lite smått :)


private int[] weapons = {1, 2, 3, 4};
private int weaponEquipped = 1;

if(spelaren trycker på en knapp){
if(weaponEquipped != (weapons.length - 1)){
weaponEquipped = weapons[weaponEquipped + 1];
}
else{
weaponEquipped = 1;
}
}



Ingen status

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till harddrive [Gå till post]:
Hade varit lättare om du sagt vilket språk det gäller. Jag skriver C++, så får du översätta.

Lämpligen använder du en array och loopar över den.

Ett stycke C#-kod:

// Där du deklarerar globalt guck
const int antalvapen = 4;
bool harvapen[antalvapen];
int equippatvapen = 0; // 0 = vapen1, 1 = vapen2, osv

// kod för vapenbytarknappen
int nyttvapen = equippatvapen;
do {
// Kan skrivas kortare, men jag tänkte att detta blir lättare att förstå
nyttvapen = nyttvapen + 1;
if (nyttvapen >= antalvapen)
nyttvapen = 0;
} while (!harvapen[nyttvapen]);
if (nyttvapen != equippatvapen)
// equippa vapen nr nyttvapen (som i kommentarn ovan)


cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till moodh [Gå till post]:
Rekursiv funktion för detta? Tämligen olämpligt, det är en typiskt iterativ uppgift.


Svar till pr0n [Gå till post]:
Din kod kollar inte om man har vapnen.

harddrive
Visningsbild
P 32 Vara Hjälte 2 779 inlägg
Trådskapare
0

Svar till gaminggirl [Gå till post]:
Är det här en bra lösning?

Behålla systemet som jag har, låta mig ha alla vapen, men om variabel för ett vapen är 0, om jag har det vapen equippat så förstörs det vapnet och nästa skapas..

alla vapen "scrollas" förbi fort... :P





Tillägg av harddrive 2010-12-29 17:51

Det här verkar fungera asbra xD
men vilken äcklig lösning på problemet

Ingen status

Anonymmedlem
Visningsbild
Bitter 9001 inlägg
0
Svar till cower [Gå till post]:
kör en loop eller rekursiv funktion, båda lösningarna funkar, det är ju i grund och botten samma sak bara att jag tycker en funktion separerar kod mycket bättre än en loop rakt i flödet.
Sen att jag hade tråkigt på jobbet och gärna hade kodat det på ett roligt sätt är en annan sak, rekursiva leksaker är roliga leksaker! :(

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0
Svar till harddrive [Gå till post]:
Det låter inte bra, det låter läskigt... fast jag förstår inte hur du menar riktigt heller...

Ingen status

pr0n
Visningsbild
P Hjälte 5 588 inlägg
0

Svar till cower [Gå till post]:
Tekniskt sett behöver den koden jag skrev inte kolla om man har ett vapen, då den egentligen bara går igenom olika lägen och alltid har ett värde.

Ingen status

harddrive
Visningsbild
P 32 Vara Hjälte 2 779 inlägg
Trådskapare
0
Svar till gaminggirl [Gå till post]:
tänk dig att jag har 4 vapen

1 2 3 4

vapen 2 och 3 är inaktiverade

under en bråkdelssek så bläddras vapnen 2 och 3
Då variabeln säger att jag inte kan ha vapen 2 när vapen 2 är equip så ska den hoppa till vapen 3.. vapen 3 säger samma sak och då hoppar man till vapen 4.

Alltså ser man alla sprites under en bråkdelssec det blir alltså en liten delay. Men för att de inte ska synas har jag gjort en timer som de-activeatear alla obj.


Det här hade varit olämpligt om man hade 60 vapen = mycket delay när man byter vapen.


Ingen status

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till pr0n [Gå till post]:
Du läste inte det ursprungliga inlägget i tråden altså?


Svar till moodh [Gå till post]:
Det finns ingenting som säger att man inte kan lägga den kodsnutten i en egen funktion, det hade jag också gjort. Däremot är det olämpligt att göra rekursion här - det du beskriver kallas "tail recursion" och kan alltid skrivas om till en iterativ variant. Nästan alltid blir koden både lättare att läsa och betydligt snabbare av det.

Det är för övrigt mindre roligt att debugga rekursiva leksaker...

pr0n
Visningsbild
P Hjälte 5 588 inlägg
0

Svar till cower [Gå till post]:
Du läste inte de två första raderna i mitt inlägg?

Ingen status

harddrive
Visningsbild
P 32 Vara Hjälte 2 779 inlägg
Trådskapare
0
"Behålla systemet som jag har? låta mig ha alla vapen, men om variabel för ett vapen är 0, om jag har det vapen equippat så förstörs det vapnet och nästa skapas.."

Problem.. den flimmrar förbi alla vapen..! tips :P ?

Ingen status

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till pr0n [Gå till post]:
Jodå, jag förstod bara inte att det betydde "Jag kladdade ihop lite kod och sket i vad det var meningen att den skulle göra."

west_west
Visningsbild
P 33 Rimforsa Hjälte 375 inlägg
0

Svar till harddrive [Gå till post]:
Alternativ till if-satser torde vara case-satser. Ser enl mig mer estetiskt ut. Men annars så... Allt handlar ju om att kolla och sen välja vad som händer baserat på informationen man kollade.

Jag behöver inga flashiga bilder eller copy-paste:ade resonemang för att visa att jag har rätt.


Forum » Datorer & IT » Webbutveckling & Programmering » Kretslopp - programmering hjälp!

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons