diff --git a/Obesenec/.gitignore b/Obesenec/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53
--- /dev/null
+++ b/Obesenec/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/Obesenec/src/cz/vsb/krouzek/Hraj.java b/Obesenec/src/cz/vsb/krouzek/Hraj.java
new file mode 100644
index 0000000000000000000000000000000000000000..99d5dec377096f90dcc927962cc40b91dc77e880
--- /dev/null
+++ b/Obesenec/src/cz/vsb/krouzek/Hraj.java
@@ -0,0 +1,24 @@
+package cz.vsb.krouzek;
+
+import java.util.List;
+
+public class Hraj {
+
+	public static void main(String[] args) {
+		oknoSibenice = new OknoSibenice(Hraj::startHry, Hraj::konecHry, Hraj::zvolenoPismeno);
+		
+		
+	}
+	
+	public static void startHry() {
+		
+	}
+
+	public static void konecHry() {
+		
+	}
+
+	public static void zvolenoPismeno(List<Character> pismena) {
+	}
+
+}
diff --git a/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java b/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d14aa80a15f3fd1c770a5633b88150fe6f22435
--- /dev/null
+++ b/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java
@@ -0,0 +1,175 @@
+package cz.vsb.krouzek;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import javax.imageio.ImageIO;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+public class OknoSibenice extends JFrame {
+
+	private static final long serialVersionUID = -5182233956382753964L;
+
+	private static List<String> imageNames = Arrays.asList("sibenice-0.png", "sibenice-1.png", "sibenice-2.png",
+			"sibenice-3.png", "sibenice-4.png", "sibenice-5.png", "sibenice-6.png", "sibenice-7.png", "sibenice-8.png");
+	private JPanel letterPanel;
+	private JPanel gamePanel;
+	private JButton startButton;
+	private JButton endButton;
+	private JLabel wordLabel;
+	private JLabel imageLabel;
+	private List<JButton> charButtons = new ArrayList<JButton>();
+	private int mistakeCount = 0;
+
+	private Runnable startHry;
+	private Runnable konecHry;
+	private Consumer<List<Character>> vyberPismena;
+
+	
+	public OknoSibenice(Runnable startHry, Runnable konecHry, Consumer<List<Character>> vyberPismena){
+		super("Hádání slov");
+		this.startHry = startHry;
+		this.konecHry = konecHry;
+		this.vyberPismena = vyberPismena;
+		initialize();
+	}
+
+	public void initialize() {
+		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+		getContentPane().setLayout(new BorderLayout());
+
+		// inicializace jednotlivých komponent přes getter metody
+		getContentPane().add(getLetterPanel(), BorderLayout.SOUTH);
+		getContentPane().add(getImageLabel(), BorderLayout.EAST);
+		getContentPane().add(getGamePanel(), BorderLayout.NORTH);
+		getContentPane().add(getWordLabel(), BorderLayout.CENTER);
+
+		pack();
+		setVisible(true);
+	}
+
+	public JPanel getLetterPanel() {
+		if (letterPanel == null) {
+			letterPanel = new JPanel(new GridBagLayout());
+			int counter = 1;
+			for (Map.Entry<Character, List<Character>> entry : SibeniceZaklad.abeceda.entrySet()) {
+				JButton button = new JButton(
+						entry.getValue().stream().map(String::valueOf).collect(Collectors.joining(" ")));
+				button.setName(String.valueOf(entry.getKey()));
+				GridBagConstraints bagConstraints = new GridBagConstraints();
+				bagConstraints.insets = new Insets(2, 2, 2, 2);
+				if (counter % 9 == 0) {
+					bagConstraints.gridwidth = GridBagConstraints.REMAINDER;
+				}
+				charButtons.add(button);
+				button.addActionListener(e -> {
+					String name = ((JButton)e.getSource()).getName();
+					((JButton)e.getSource()).setEnabled(false);
+					vyberPismena.accept(SibeniceZaklad.abeceda.get(name.charAt(0)));
+				});
+				letterPanel.add(button, bagConstraints);
+				counter++;
+			}
+		}
+		return letterPanel;
+	}
+
+	public JLabel getWordLabel() {
+		if (wordLabel == null) {
+			wordLabel = new JLabel("");
+			wordLabel.setHorizontalAlignment(SwingConstants.CENTER);
+			Font font =  new Font("Curier", Font.BOLD , 20);
+			wordLabel.setFont(font);
+			setWorldText("AB_H");
+		}
+		return wordLabel;
+	}
+
+	public void setWorldText(String text) {
+		Pattern p = Pattern.compile("(.)");
+		Matcher matcher = p.matcher(text);
+		text = matcher.replaceAll("$1 ");
+		getWordLabel().setText(text);
+	}
+	
+	public JLabel getImageLabel() {
+		if (imageLabel == null) {
+			imageLabel = new JLabel("");
+			updateImage();
+		}
+		return imageLabel;
+	}
+
+	public void setMistakeCount(int mistakeCount) {
+		this.mistakeCount = mistakeCount;
+		updateImage();
+	}
+	
+	public int getMistakeCount() {
+		return mistakeCount;
+	}
+
+	private void updateImage() {
+		try {
+			BufferedImage image = ImageIO.read(this.getClass().getResourceAsStream("images/"+imageNames.get(mistakeCount)));
+			imageLabel.setIcon(new ImageIcon(image));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public JButton getStartButton() {
+		if (startButton == null) {
+			startButton = new JButton("Start");
+			startButton.addActionListener(e -> {
+				charButtons.forEach(b -> b.setEnabled(true));
+				startHry.run();
+			});
+		}
+		return startButton;
+	}
+
+	public JButton getEndButton() {
+		if (endButton == null) {
+			endButton = new JButton("End");
+			endButton.addActionListener(e -> {
+				zakazTlacitkaPismenek();
+				konecHry.run();
+			});
+		}
+		return endButton;
+	}
+
+	public void zakazTlacitkaPismenek() {
+		charButtons.forEach(b -> b.setEnabled(false));
+	}
+
+	public JPanel getGamePanel() {
+		if (gamePanel == null) {
+			// HornĂ­ panel s tlaÄŤĂ­tky start a end
+			gamePanel = new JPanel(new FlowLayout());
+			gamePanel.add(getStartButton());
+			gamePanel.add(getEndButton());
+		}
+		return gamePanel;
+	}
+}
diff --git a/Obesenec/src/cz/vsb/krouzek/SibeniceZaklad.java b/Obesenec/src/cz/vsb/krouzek/SibeniceZaklad.java
new file mode 100644
index 0000000000000000000000000000000000000000..0859c7fdef39295580887b6b61b97d0eda1c0db4
--- /dev/null
+++ b/Obesenec/src/cz/vsb/krouzek/SibeniceZaklad.java
@@ -0,0 +1,53 @@
+package cz.vsb.krouzek;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+
+public class SibeniceZaklad {
+
+	private static List<String> slova = Arrays.asList("příroda", "telefon", "zahrada", "kytara", "knihovna", "banán",
+			"vlak", "internet", "obrazovka", "létání", "paprika", "jablko", "turistika", "boty", "slunce", "oheň",
+			"dálnice", "hokej", "zubní kartáček", "jogurt");
+
+	private static Random random = new Random();
+
+	public static String vyberNahodneSlovo() {
+		int nahodneCislo = random.nextInt(slova.size());
+		return slova.get(nahodneCislo);
+	}
+
+	public static HashMap<Character, List<Character>> abeceda = new HashMap<>();
+
+	static {
+		// Vytvoření mapování písmen
+		abeceda.put('A', Arrays.asList('A', 'Á'));
+		abeceda.put('B', Arrays.asList('B'));
+		abeceda.put('C', Arrays.asList('C', 'ÄŚ'));
+		abeceda.put('D', Arrays.asList('D', 'ÄŽ'));
+		abeceda.put('E', Arrays.asList('E', 'É', 'Ě'));
+		abeceda.put('F', Arrays.asList('F'));
+		abeceda.put('G', Arrays.asList('G', 'G'));
+		abeceda.put('H', Arrays.asList('H'));
+		abeceda.put('I', Arrays.asList('I', 'ĂŤ'));
+		abeceda.put('J', Arrays.asList('J'));
+		abeceda.put('K', Arrays.asList('K'));
+		abeceda.put('L', Arrays.asList('L', 'Ä˝'));
+		abeceda.put('M', Arrays.asList('M'));
+		abeceda.put('N', Arrays.asList('N', 'Ň'));
+		abeceda.put('O', Arrays.asList('O', 'Ă“'));
+		abeceda.put('P', Arrays.asList('P'));
+		abeceda.put('Q', Arrays.asList('Q'));
+		abeceda.put('R', Arrays.asList('R', 'Ř'));
+		abeceda.put('S', Arrays.asList('S', 'Ĺ '));
+		abeceda.put('T', Arrays.asList('T', 'Ť'));
+		abeceda.put('U', Arrays.asList('U', 'Ăš', 'Ĺ®'));
+		abeceda.put('V', Arrays.asList('V'));
+		abeceda.put('W', Arrays.asList('W'));
+		abeceda.put('X', Arrays.asList('X'));
+		abeceda.put('Y', Arrays.asList('Y', 'Ăť'));
+		abeceda.put('Z', Arrays.asList('Z', 'Ĺ˝'));
+	}
+
+}
diff --git a/Obesenec/src/module-info.java b/Obesenec/src/module-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..b109885d59dbff558f1ed3f35ebd8c408c4edfd3
--- /dev/null
+++ b/Obesenec/src/module-info.java
@@ -0,0 +1,6 @@
+/**
+ * @author jez04
+ *
+ */
+module Obesenec {
+}
\ No newline at end of file