• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. C + C++ + C #

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

[OPGELOST] C# Menu Freeze

  • Victor
  • 22 augustus 2013 om 18:51
  • Victor
    Master
    Ontvangen Reacties
    102
    Berichten
    1.680
    • 22 augustus 2013 om 18:51
    • #1

    Hallo ICT'ers,

    Ik ben bezig met een simpele pong game in C#. Nu ben ik een menu aan het maken. Hieronder zijn de GameStates die ik heb:

    - MainMenu //Hoofdmenu met de opties om het spel te spelen en om de settings te wijzigen
    - PrePlaying //In dit scherm kies je singleplayer of multiplayer
    - Playing // Het spel zelf
    - Pause // Spreekt voor zich
    - Settings // Settings wijzigen

    Als ik in het hoofdmenu op preplaying klik werkt alles. Maar als ik dan doorklik op playing staat alles vast. Iemand een idee? Ook is het soms zo dat als ik op preplaying klik dat ik dan ook meteen de volgende knop indruk. (Die staat op de volgende pagina op dezelfde plek) Is er een manier om dat tegen te gaan?

    Hier is de code:

    C#
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.GamerServices;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Media;
    
    
    namespace WindowsGame4
    {
        public class Pong : Microsoft.Xna.Framework.Game
        {
            GraphicsDeviceManager graphics;
            SpriteBatch spriteBatch;
    
    
            //Gamestates
            enum GameState
            {
                MainMenu,
                Settings,
                Playing,
                Pause,
                PrePlaying
            }
    
    
            GameState CurrentGameState = GameState.MainMenu;
    
    
            //Screen Adjustments
            int screenWidth = 800;
            int screenHeight = 600;
    
    
            //Menu buttons
            cButton btnPrePlaying;
            cButton btnSettings;
            cButton btnOnePlayer;
            cButton btnTwoPlayers;
    
    
            //PrePlaying Settings
            bool multiplayer = false;
    
    
            //SpriteFonts
            SpriteFont pong;
    
    
            //Ball and Player Content
            Texture2D ballTexture;
            Rectangle ballRectangle;
    
    
            Texture2D player1Texture;
            Rectangle player1Rectangle;
    
    
            Texture2D player2Texture;
            Rectangle player2Rectangle;
    
    
            Vector2 velocity;
    
    
    
    
            public Pong()
            {
                graphics = new GraphicsDeviceManager(this);
                Content.RootDirectory = "Content";
            }
    
    
            protected override void Initialize()
            {
                IsMouseVisible = true;
                base.Initialize();
            }
    
    
            protected override void LoadContent()
            {
    
    
                spriteBatch = new SpriteBatch(GraphicsDevice);
    
    
                graphics.PreferredBackBufferWidth = screenWidth;
                graphics.PreferredBackBufferHeight = screenHeight;
                graphics.IsFullScreen = true;
                graphics.ApplyChanges();
    
    
                //SpriteFonts
                pong = Content.Load<SpriteFont>("pong");
    
    
                //btnPrePlaying
                btnPrePlaying = new cButton(Content.Load<Texture2D>("btnPlaying"), graphics.GraphicsDevice);
                btnPrePlaying.setPosition(new Vector2(350, 250));
    
    
                //btnSettings
                btnSettings = new cButton(Content.Load<Texture2D>("btnSettings"), graphics.GraphicsDevice);
                btnSettings.setPosition(new Vector2(350, 290));
    
    
                //btnOnePlayer
                btnOnePlayer = new cButton(Content.Load<Texture2D>("btnOnePlayer"), graphics.GraphicsDevice);
                btnOnePlayer.setPosition(new Vector2(350, 250));
                
                //btnTwoPlayers
                btnTwoPlayers = new cButton(Content.Load<Texture2D>("btnTwoPlayers"), graphics.GraphicsDevice);
                btnTwoPlayers.setPosition(new Vector2(350, 290));
    
    
                //Ball and player content
                ballTexture = Content.Load<Texture2D>("ball");
                ballRectangle = new Rectangle(300, 300, 32, 32);
    
    
                player1Texture = Content.Load<Texture2D>("player");
                player1Rectangle = new Rectangle(20, 250, 5, 50);
    
    
                player2Texture = Content.Load<Texture2D>("player");
                player2Rectangle = new Rectangle(780, 250, 5, 50);
    
    
                velocity.X = 3f;
                velocity.Y = 3f;
    
    
            }
    
    
            protected override void UnloadContent()
            {
               
            }
    
    
            protected override void Update(GameTime gameTime)
            {
                if (Keyboard.GetState().IsKeyDown(Keys.Escape))
                    this.Exit();
    
    
                MouseState mouse = Mouse.GetState();
    
    
                switch (CurrentGameState)
                {
                    case GameState.MainMenu:
                        if (btnPrePlaying.isClicked == true) CurrentGameState = GameState.PrePlaying;
                        btnPrePlaying.Update(mouse);
                        if (btnSettings.isClicked == true) CurrentGameState = GameState.Settings;
                        btnSettings.Update(mouse);
                        break;
    
    
                    case GameState.PrePlaying:
                        if (btnOnePlayer.isClicked == true) CurrentGameState = GameState.Playing;
                        btnOnePlayer.Update(mouse);
                        if (btnTwoPlayers.isClicked == true) CurrentGameState = GameState.Playing;
                        btnTwoPlayers.Update(mouse);
                        
                       
                        break;
    
    
                    case GameState.Settings:
    
    
                        break;
    
    
                    case GameState.Playing:
    
    
                        if (multiplayer == false)
                        {
                            if (Keyboard.GetState().IsKeyDown(Keys.Up))
                            {
                                player1Rectangle.Y -= 6;
                            }
    
    
                            if (Keyboard.GetState().IsKeyDown(Keys.Down))
                            {
                                player1Rectangle.Y += 6;
                            }
                        }
    
    
                        break;
                }
    
    
    
    
                base.Update(gameTime);
            }
    
    
            protected override void Draw(GameTime gameTime)
            {
                GraphicsDevice.Clear(Color.CornflowerBlue);
    
    
                spriteBatch.Begin();
                switch (CurrentGameState)
                {
                    case GameState.MainMenu:
                        btnPrePlaying.Draw(spriteBatch);
                        btnSettings.Draw(spriteBatch);
                        break;
    
    
                    case GameState.PrePlaying:
                        spriteBatch.DrawString(pong, "Players", new Vector2(screenWidth / 2 - 10, 100), Color.Black);
                        btnOnePlayer.Draw(spriteBatch);
                        btnTwoPlayers.Draw(spriteBatch);
                        break;
    
    
                    case GameState.Settings:
    
    
                        break;
    
    
                    case GameState.Playing:
                        if (multiplayer == false)
                        {
                            spriteBatch.Begin();
                            spriteBatch.Draw(player1Texture, player1Rectangle, Color.White);
                            spriteBatch.Draw(ballTexture, ballRectangle, Color.White);
                            spriteBatch.End();
                        }
                        break;
                }
                spriteBatch.End();
    
    
                base.Draw(gameTime);
            }
        }
    }
    Toon Meer

    Overigens schrijf ik al mijn commentaar in het Engels. Dit zijn geen scripts van internet. ;)
    Alvast bedankt!

    //Edit
    Ik ben er net met debuggen achter gekomen dat het al freezed op het PrePlaying menu zelf. Maar het probleem is nog niet opgelost.


    //OPLOSSING//

    Het is me ondertussen gelukt. Ik had SpriteBatch.Begin() en SpriteBatch.End() dubbel in de switch gezet.

    Voor het snelle doorklikken van buttons heb ik een oplossing bedacht. Ik heb een extra boolean wasClicked. Ik kijk eerst of de linker mouse button de state "pressed" heeft. Als dat het geval is word wasCicked TRUE. Als die dan word released als hij nog op de button is word je doorverwezen. Als je met je muis van de button afgaat word wasClicked weer FALSE. ;)

    Met vriendelijke groet,

    Victor
    Beheerder ICTscripters

    Bewerkt 2 keer, laatst door victor: Oplossing zelf gevonden (26 augustus 2013 om 22:22).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design