snake game

Status
Niet open voor verdere reacties.

jeane01

Nieuwe gebruiker
Lid geworden
12 nov 2006
Berichten
4
Hello,

Ik heb een aantal jaar geleden een snake spel gemaakt in java en nu zou ik dat willen maken in C#. Maar kheb problemen bij het tekenen van de figuren, als in ze worden niet getekend.

De slang bestaat een hoofd (gif file), huid(png file) en dan nog bolletjes & sterretjes (png's).

Mijn teken functie ziet er zo uit:

public void paintComponent(Graphics g)
{

if (tekenBol)
{
bol.teken(g);
}

if (tekenSter)
{
ster.teken(g);
}

slang.teken(g);

}

met die in slang:

Image huid = Image.FromFile("..\\..\\huid.png");
Image kopOnder = Image.FromFile("..\\..\\kop_Onder.gif");
Image kopBoven = Image.FromFile("..\\..\\kop_Boven.gif");
Image kopLinks = Image.FromFile("..\\..\\kop_Links.gif");
Image kopRechts = Image.FromFile("..\\..\\kop_Rechts.gif");

public void teken(Graphics g)
{

for(int i=langer-1;i>=0;i--)
{
if(i==0)
{

if (boven)
{

g.DrawImage(kopBoven, x * 20 + 25, y * 20 + 45);

}
if (onder)
{

g.DrawImage(kopOnder, x * 20 + 25, y * 20 + 45);

}
if (links)
{
g.DrawImage(kopLinks, x * 20 + 25, y * 20 + 45);
}
if (rechts)
{
g.DrawImage(kopRechts , x * 20 + 25, y * 20 + 45);
}
}
else
{
g.DrawImage(huid, x*20+25, y*20+45);
}
}
}

maar er wordt niets op het scherm getoond..

In java was het "simpeler" met altijd 'repaint();' maar hoe kan ik dit nu ook in c# aan het werken krijgen?

Als je met deze code niet genoeg hebt kan ik eventueel ook de volledige code geven..

Mvg
 
Ja daar tekenen ze gewoon een vierkant blokje : 'BitmapGraph.FillRectangle(new SolidBrush(Color.Brown)'
Ik zou willen gebruik maken van gif en png voor de slang te tekenen.
 
Ik heb het probleem gevonden (denk ik toch), weet alleen nog niet hoe ik het moet oplossen..

Code:
  private void timer_Tick(object sender, EventArgs e)
        {
            aantalBewegingen++;

            if (onder)
            {

                slang.beweegOnder();
                this.Refresh();
                
            }

            if (boven)
            {

                slang.beweegBoven();
                this.Refresh();
            }

            if (links)
            {

                slang.beweegLinks();
                this.Refresh();
            }

            if (rechts)
            {

                slang.beweegRechts();
                this.Refresh();
            }

            if (slang.heeftKop())
            {
                verloren = true;
            }


            if (verloren)
            {
                System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                player.SoundLocation = "..//..//gameover.wav";
            }

            if (bol.opSlang(slang))
            {

                testScore = (35 - aantalBewegingen);

                if (testScore <= 0)
                {
                    testScore = 1;
                }

                score += testScore * level;
                aantalBollen++;

                do
                {
                    bol = new Bollen();
                    tekenBol = true;
                }
                while (bol.opSlang(slang));

                slang.verleng();
                aantalBewegingen = 0;

                if ((aantalBollen - opgegeten) == 4)
                    do
                    {
                        ster = new Sterren();
                        tekenBol = false;
                        tekenSter = true;
                    }
                    while (ster.opSlang(slang));
                this.Refresh();


                if (tekenSter)
                {

                    aantalBewegingen++;

                    if (ster.opSlang(slang))
                    {

                        System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                        player.SoundLocation = "..//..//cash.wav";

                        score += (70 - aantalBewegingen) * level;
                        opgegeten = aantalBollen;

                        tekenSter = false;
                        tekenBol = true;

                        slang.verleng();

                        aantalBewegingen = 0;
                        this.Refresh();
                    }

                    if (aantalBewegingen == 41) //= 20 bewegingen en dan verdwijnt de ster en komt er opnieuw een bolletje
                    {  

                        opgegeten = aantalBollen;
                        tekenSter = false;
                        tekenBol = true;
                        aantalBewegingen = 0;

                        this.Refresh();
                    }
                }
            }
        }

Dit is mijn code van de timer en overal waar this.Refresh(); staat, stond in java repaint(); waardoor de teken functie opgeroepen werd. Dit is dus hier niet het geval..

Hoe kan ik nu in die timer code er voor zorgen dat deze code wordt opgeroepen?
Code:
        public void paintComponent(PaintEventArgs g)
        {

            if (tekenBol)
            {
                bol.teken(g);
            }

            if (tekenSter)
            {
                ster.teken(g);
            }

            slang.teken(g);

        }
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan