Don`t starting function on timer tick

How can i push my function DrawMap and MoveGhost to work?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.FreeGlut;
using Tao.OpenGl;
using Tao.Platform.Windows;

namespace Puck_Man
{
    public partial class Form1 : Form
    {
        int[,] Map = new int[20,20];
        void DrawWall(float Start_X, float Start_Y)
        {
            float
            dx = 0.08f, 
            dy = 0.1f;  
            Gl.glColor3f(0, 0, 1);
            Gl.glRectf(Start_X, Start_Y, Start_X + dx, Start_Y - dy);
            Gl.glColor3f(0, 0.5f, 1);
            Gl.glRectf(Start_X + 0.01f, Start_Y - 0.01f, Start_X + dx - 0.01f, Start_Y - dy + 0.01f);
        }



    void DrawPointScore(float Start_X, float Start_Y)
    {
        
       Gl.glEnable(Gl.GL_POINT_SMOOTH);
       float
       dx = 0.08f, 
       dy = 0.1f,  
       PacX = Start_X + dx / 2,
       PacY = Start_Y - dy / 2;
       Gl.glColor3f(1, 1, 1);
       Gl.glPointSize(8);
       Gl.glBegin(Gl.GL_POINTS);
       Gl.glVertex2f(PacX, PacY); 
       Gl.glEnd();
    }

    void DrawGhost(float X, float Y)
    {
        Gl.glEnable(Gl.GL_POINT_SMOOTH);
        float
        dx = 0.08f, 
        dy = 0.1f,  
        PacX = X + dx / 2,
        PacY = Y - dy / 2;
        Gl.glColor3f(1, 0.75f, 0.8f);
        Gl.glPointSize(30);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(PacX, PacY); 
        Gl.glEnd();
        Gl.glColor3f(1, 1, 1);
        Gl.glPointSize(5);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(PacX - 0.02f, PacY + 0.02f); 
        Gl.glVertex2f(PacX + 0.02f, PacY + 0.02f); 
        Gl.glEnd();
        Gl.glColor3f(0, 0, 0);
        Gl.glPointSize(2);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(PacX - 0.02f, PacY + 0.02f);
        Gl.glVertex2f(PacX + 0.02f, PacY + 0.02f);
        Gl.glEnd();
        Gl.glColor3f(0, 0, 0);
        Gl.glPointSize(8);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(PacX  , PacY - 0.02f);
        Gl.glEnd();
        Gl.glColor3f(1, 0, 0);
        Gl.glPointSize(10);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(PacX - 0.025f, PacY - 0.035f); 
        Gl.glVertex2f(PacX + 0.025f, PacY - 0.035f); 
        Gl.glEnd();

    }

    void DrawBonusINV(float X, float Y)
    {
        Gl.glEnable(Gl.GL_POINT_SMOOTH);
        float
        dx = 0.08f,
        dy = 0.1f;

        
        Gl.glColor3f(1, 0, 0);
        Gl.glPointSize(30);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(X + dx / 2, Y - dy / 2); 
        Gl.glEnd();
        Gl.glColor3f(1, 0.75f, 0.8f);
        Gl.glPointSize(22);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(X + dx / 2, Y - dy / 2);
        Gl.glEnd();
        Gl.glColor3f(1, 0, 0);
        Gl.glLineWidth(5);
        Gl.glBegin(Gl.GL_LINES);   
        Gl.glVertex2f(X, Y); Gl.glVertex2f(X + dx, Y - dy);
        Gl.glVertex2f(X, Y - dy); Gl.glVertex2f(X + dx, Y);
        Gl.glEnd();
    }

   
    void DrawPlayer(float x, float y,int Direct)
    {
        float StartX; 
        float StartY; 
        StartX = x; 
        StartY = y; 
        Gl.glEnable(Gl.GL_POINT_SMOOTH);
        float
        dx = 0.08f, 
        dy = 0.1f,  
        PacX = StartX + dx / 2, 
        PacY = StartY - dy / 2; 
        Gl.glColor3f(1, 1, 0);
        Gl.glPointSize(30);
        Gl.glBegin(Gl.GL_POINTS);
        Gl.glVertex2f(PacX, PacY);
        Gl.glEnd();
        Gl.glColor3f(0, 0, 0);
        switch (Direct)
        {
            case 0: 
                Gl.glPointSize(5); 
                Gl.glBegin(Gl.GL_POINTS);  
                Gl.glVertex2f(PacX, PacY + 0.02f);
                Gl.glEnd();
                Gl.glColor3f(0, 0, 0); 
                Gl.glBegin(Gl.GL_POLYGON); 
                Gl.glVertex2f(PacX, PacY);
                Gl.glVertex2f(PacX + 0.04f, PacY + 0.04f);
                Gl.glVertex2f(PacX + 0.04f, PacY - 0.04f); 
                Gl.glEnd();
                break;
            case 1: 
                Gl.glPointSize(5);   
                Gl.glBegin(Gl.GL_POINTS);  
                Gl.glVertex2f(PacX, PacY + 0.02f);
                Gl.glEnd();
                Gl.glColor3f(0, 0, 0); 
                Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex2f(PacX, PacY); 
                Gl.glVertex2f(PacX - 0.04f, PacY +  0.04f);
                Gl.glVertex2f(PacX - 0.04f, PacY -  0.04f);
                Gl.glEnd();
                break;
            case 2:
                Gl.glPointSize(5);
                Gl.glBegin(Gl.GL_POINTS);
                Gl.glVertex2f(PacX - 0.02f, PacY);
                Gl.glEnd();
                Gl.glColor3f(0, 0, 0); 
                Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex2f(PacX, PacY);
                Gl.glVertex2f(PacX - 0.04f, PacY + 0.05f);
                Gl.glVertex2f(PacX + 0.04f, PacY + 0.05f); 
                Gl.glEnd();
                break;
            case 3:
                Gl.glPointSize(5);      
                Gl.glBegin(Gl.GL_POINTS);
                Gl.glVertex2f(PacX + 0.02f, PacY);
                Gl.glEnd();
                Gl.glColor3f(0, 0, 0); 
                Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex2f(PacX, PacY);
                Gl.glVertex2f(PacX - 0.04f, PacY - 0.05f);
                Gl.glVertex2f(PacX + 0.04f, PacY - 0.05f); 
                Gl.glEnd();
                break;
        }
    }

    void DrawEnd(float Start_X, float Start_Y)
    {
        float
        dx = 0.08f, 
        dy = 0.1f;  
        Gl.glColor3f(1, 1, 0);
        Gl.glRectf(Start_X, Start_Y, Start_X + dx, Start_Y - dy);
    }

    int Direc_player = 1;
    private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Up:
                Direc_player = 2;
                break;
            case Keys.Down:
                Direc_player = 3;
                break;
            case Keys.Left:
                Direc_player = 1;
                break;
            case Keys.Right:
                Direc_player = 0;
                break;
        }
    }

    int[,] Map1 = {
    { 2, 2, 2, 2, 2, 2, 2, 2, 2,   2,  2,   2,   2,  2,  2 , 2 , 2 , 2,  2,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  2 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 4, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   2,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  7,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 1, 1, 1, 2, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 2, 1, 2, 5, 2, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 2, 1, 1, 2, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 1 , 1,  1,  2,},
    { 2, 1, 2, 2, 2, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 2 , 3 , 2,  1,  2,},
    { 2, 1, 1, 1, 1, 1, 1, 1, 1,   1,  1,   1,   1,  1,  1 , 1 , 2 , 1,  1,  2,},
    { 2, 2, 2, 2, 2, 2, 2, 2, 2,   2,  2,   2,   2,  2,  2 , 2 , 2 , 2,  2,  2,},
    };

  '  void DrawMap()'
    {
        
        
        float
        StartX = -1, 
        StartY = 1;  
        for (int i = 0; i < 20; i++)
        {
            StartX = -1;
            for (int j = 0; j < 20; j++)
            {
                switch ( Map1[i,j])
                {
                    case 0: break;
                    case 1: DrawPointScore(StartX, StartY); break; 
                    case 2: DrawWall(StartX, StartY); break;
                    case 3: case 4: DrawGhost(StartX, StartY); break;
                    case 5: DrawBonusINV(StartX, StartY); break;
                    case 6: DrawEnd(StartX, StartY); break;
                    case 7: DrawPlayer(StartX, StartY, Direc_player); break; 
                }
                
                StartX += 0.08f;
            }
            
            StartY -= 0.1f;
        }
    }


    int GhostSleep = 0;
  '  void MoveGhost()'
    {
        GhostSleep++;
        if (GhostSleep > 5)
        {
            for (int D = 0; D < 20; D++)
            {

                for (int R = 0; R < 20; R++)
                {
                    if ((Map1[D, R] != 1) && (Map1[D, R] != 2) && (Map1[D, R] != 5) && (Map1[D, R] != 6) && (Map1[D, R] != 7) && (Map1[D, R] != 0))
                    {
                        Random rnd = new Random();
                        int Direct = rnd.Next() % 4;
                        switch (Direct)
                        {
                            case 0:
                                if ((D + 1) < 20)
                                {
                                    
                                    if (Map1[D + 1,R] == 7) Map1[D + 1,R] = 1;

                                   if (
                                 (Map1[D + 1,R] != 2) &&  //проверяем нет ли стены
                                 (Map1[D + 1,R] != 3) && //проверяем нет ли 2 духа
                                 (Map1[D + 1,R] != 4) && //проверяем нет ли 2 духа
                                 (Map1[D + 1,R] != 5) && //проверяем нет ли бонуса
                                 (Map1[D + 1,R] != 6)   //проверяем нет ли выхода
                                   )
                                    {
                                        Map1[D + 1,R] += 3;
                                        Map1[D,R] -= 3;
                                    }
                                }
                                break;
                            case 1: 
                               if ((D - 1) > -1)
                                {
                                    if (Map1[D - 1,R] == 7) Map[D - 1,R] = 1;
                                    if (
                                 (Map1[D - 1,R] != 3) && 
                                 (Map1[D - 1,R] != 4) && 
                                 (Map1[D - 1,R] != 2) && 
                                 (Map1[D - 1,R] != 5) && 
                                 (Map1[D - 1,R] != 6))  
                                    {
                                        Map1[D - 1,R] += 3;
                                        Map1[D,R] -= 3;
                                    }
                                }
                                break;
                            case 2:
                                if ((R - 1) > 0)
                                {
                                    if (Map1[D,R - 1] == 7) Map1[D,R - 1] = 1;
                                    if (
                                 (Map1[D,R - 1] != 3) && 
                                 (Map1[D,R - 1] != 4) && 
                                 (Map1[D,R - 1] != 2) && 
                                 (Map1[D,R - 1] != 5) && 
                                 (Map1[D,R - 1] != 6))   
                                    {
                                        Map1[D,R - 1] += 3;
                                        Map1[D,R] -= 3;
                                    }
                                }
                                break;
                            case 3:
                                if ((R + 1) < 20)
                                {
                                    if (Map1[D,R + 1] == 7) Map1[D,R + 1] = 1;
                                    if (
                                 (Map1[D,R + 1] != 3) && 
                                 (Map1[D,R + 1] != 4) && 
                                 (Map1[D,R + 1] != 2) && 
                                 (Map1[D,R + 1] != 5) && 
                                 (Map1[D,R + 1] != 6))  
                                    {
                                        Map1[D,R + 1] += 3;
                                        Map1[D,R] -= 3;
                                    }
                                }
                                break;
                        }
                    }
                }
            }
            GhostSleep = 0;
        }
    }


    public Form1()
    {
        InitializeComponent();
        Deck.InitializeContexts();
        timer1.Enabled = false;
        timer1.Interval = 300;
        Start.Text = "Start";
    }

    private void Deck_Load(object sender, EventArgs e)
    {
        Tao.OpenGl.Gl.glClearColor(0, 0, 0, 0);
        Tao.OpenGl.Gl.glClear( Tao.OpenGl.Gl.GL_COLOR_BUFFER_BIT |Tao.OpenGl.Gl.GL_DEPTH_BUFFER_BIT);
        Gl.glLoadIdentity();
        DrawMap();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {

        //MessageBox.Show("F");
        'Tao.OpenGl.Gl.glClearColor(0, 0, 0, 0);
        Tao.OpenGl.Gl.glClear(Tao.OpenGl.Gl.GL_COLOR_BUFFER_BIT |Tao.OpenGl.Gl.GL_DEPTH_BUFFER_BIT);
        Gl.glLoadIdentity();
        DrawMap();
        MoveGhost(); '
    }

    private void Start_Click(object sender, EventArgs e)
    {
        if (Start.Text=="Start")
        {
            timer1.Enabled = true;
            timer1.Start();
            Start.Text = "Pause";
        }
        else
        {
            timer1.Stop();
            timer1.Enabled = false;
            Start.Text = "Start";
        }
    }   
}

}


Ответы (0 шт):