Archief - [PROG]C# 2 labels van plaats verwisselen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Shotterke

Legacy Member
Ik ben bezig met een schuifpuzzel te maken.
Ik zit nu aan het stuk waarbij ik de verschillende stukken kan verplaatsen.
Naar links en rechts lukt perfect maar om naar boven of naar beneden te gaan zit ik met een probleem.

Dit is de code:

Code:
public void Schuiven(int id)
{
            Vakje vak1 = (Vakje)Vakjes[id + 1];
            Vakje vak2 = (Vakje)Vakjes[id - 1];
            //Vakje vak3 = (Vakje)Vakjes[id + 4];
            //Vakje vak4 = (Vakje)Vakjes[id - 4];
            if (vak1.Inhoud == 0)
            {
                alVakjes.Insert(id, alVakjes[id + 1]);
                alVakjes.RemoveAt(id + 2);
            }
            if (vak2.Inhoud == 0)
            {
                alVakjes.Insert(id - 1, alVakjes[id]);
                alVakjes.RemoveAt(id + 1);
            }
            //if (vak3.Inhoud == 0)
            //{
            //    alVakjes.Insert(id, alVakjes[id + 4]);
            //    alVakjes.RemoveAt(id + 8);
            //}
            //if (vak4.Inhoud == 0)
            //{
            //    alVakjes.Insert(id - 4, alVakjes[id]);
            //    alVakjes.RemoveAt(id + 5);
            //}
 }

Ik werk met indexen dus niet met een x en y coördinaat.
Dus als ik op een van de 16 labels klik kijk ik of er een 0 in de buurt is. Als dit zo is dan verwissel ik ze met elkaar.
Vak3 en Vak4 zijn voor naar boven of beneden te gaan.

Krueger

Legacy Member
Met x-y coordinaten werken was te handig, een 2-dimensionale array te logisch? :p

Iets meer randinformatie rond de code zou wel handig zijn, want uw probleem en vraag zijn nogal zeer cryptisch.

killgore

Legacy Member
Wat Krueger said + is het echt nodig om de hele labels te wisselen? Zou het niet handiger zijn enkel de inhoud/kleur/whatever je ook gebruikt te wisselen?

Shotterke

Legacy Member
Kheb het al gevonden :p
Code:
            Vakje vak1 = (Vakje)Vakjes[id + 1];
            if (vak1.Inhoud == 0)
            {
                alVakjes.Insert(id, alVakjes[id + 1]);
                alVakjes.RemoveAt(id + 2);
            }

            Vakje vak2 = (Vakje)Vakjes[id - 1];
            if (vak2.Inhoud == 0)
            {
                alVakjes.Insert(id - 1, alVakjes[id]);
                alVakjes.RemoveAt(id + 1);
            }

            Vakje vak3 = (Vakje)Vakjes[id + 4];
            if (vak3.Inhoud == 0)
            {
                alVakjes.Insert(id, alVakjes[id + 4]);
                alVakjes[id + 5] = alVakjes[id + 1];
                alVakjes.RemoveAt(id + 1);
            }

            Vakje vak4 = (Vakje)Vakjes[id - 4];
            if (vak4.Inhoud == 0)
            {
                alVakjes.Insert(id + 1, alVakjes[id - 4]);
                alVakjes[id - 4] = alVakjes[id];
                alVakjes.RemoveAt(id);
            }
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan