classdef Minesweeper < handle
    properties
        difficult_window    %Auswahlfenster für Schwierigkeit
        button_easy         %Button in Auswahlfenster
        button_medium       %Button in Auswahlfenster
        button_hard         %Button in Auswahlfenster
        difficult_window_text1 %Textfeld in Auswahlfenster
        difficult_window_text2 %Textfeld in Auswahlfenster  
        Spielfeld
    end
    methods (Static, Access = public)  %Methoden des Auswahlfensters
        
        function obj = Minesweeper()
            obj.difficult_window=figure();  %Main Window wird erstellt
            set(obj.difficult_window,'Visible','off','Position',...
                [500,300,175,125],'Name','Minesweeper-Schwierigkeitsgrad',...
                'NumberTitle','off','MenuBar','none','Resize','off',...
                'Toolbar','none');
            
            obj.button_easy=uicontrol();    %Buttons erstellen
            set(obj.button_easy,'Style','pushbutton','String','Easy',...
                'Position',[5,5,50,25],'Callback',{@obj.button_easy_Callback, obj});
            
            obj.button_medium=uicontrol();    %Buttons erstellen
            set(obj.button_medium,'Style','pushbutton','String','Medium',...
                'Position',[60,5,50,25],'Callback',{@obj.button_medium_Callback, obj});
            
            obj.button_hard=uicontrol();    %Buttons erstellen
            set(obj.button_hard,'Style','pushbutton','String','Hard',...
                'Position',[115,5,50,25],'Callback',{@obj.button_hard_Callback, obj});
            
            obj.difficult_window_text1=uicontrol(); %Textfelder definieren
            set(obj.difficult_window_text1,'Style','text',...
                'String','Willkommen bei Minesweeper',...
                'Backgroundcolor',[.8 .8 .8],...
                'Position',[-5,90,180,25]);
            
            obj.difficult_window_text2=uicontrol(); %Textfelder definieren
            set(obj.difficult_window_text2,'Style','text',...
                'String','Bitte wählen Sie Ihren Schwierigkeitsgrad',...
                'Backgroundcolor',[.8 .8 .8],...
                'Position',[-15,60,200,30]);
            
            set(obj.difficult_window,'Visible','on','HandleVisibility','callback');
        end
    end
    methods (Static, Access = private)      %Callback Functions Auswahlfenster als separater Methods Block
        function button_easy_Callback(~,~,obj)
            
        set(obj.difficult_window,'Name','easy')
        close (obj.difficult_window);
        createSpielfeld;
        end
        
        function button_medium_Callback(~,~,obj) 
        set(obj.difficult_window,'Name','medium')
        end
        
        function button_hard_Callback(~,~,obj) 
        set(obj.difficult_window,'Name','hard')
        end
        
    end
    methods (Static, Access = public)  %create Spielfeld als Separaten Block
        
        function obj=createSpielfeld()
            
                
            obj.Spielfeld=figure();  %Main Window wird erstellt
            set(obj.Spielfeld,'Visible','off','Position',...
                [500,300,175,125],'Name','Minesweeper-Spielfeld',...
                'NumberTitle','off','MenuBar','none','Resize','off',...
                'Toolbar','none');
            
            
            set(obj.Spielfeld,'Visible','on','HandleVisibility','callback');
        end
        
    end
    
end
