A Java GUI implementation of the traditional Ethiopian board game Gebeta (Mancala), created as an Object-Oriented Programming project.
Made by: Yabetse Tesfaye
Institution: Addis Ababa Institute of Technology
Program: Software Engineer
Year: 5th Year Student
ID: UGR/31352/15
- Traditional Gebeta Rules: Complete implementation of the classic Gebeta game mechanics
- Beautiful GUI: Aesthetic board design with colorful stones and intuitive interface
- Multiple Panels:
- Intro page with background image
- Game board with full functionality
- About page with developer information
- Help page with game instructions and tutorial video link
- Enhanced User Experience: Hover effects, smooth animations, and responsive design
- Game Management: New game, reset, and navigation features
- Java Development Kit (JDK) 8 or higher
- The background image file:
Background Image.png(must be in the same directory)
javac *.javajava Gebeta- Setup: Each small pit starts with 4 stones
- Turns: Players take turns picking up all stones from one of their pits
- Distribution: Stones are distributed one by one into subsequent pits counter-clockwise
- Extra Turns: If the last stone lands in your store, you get another turn
- Capture: If the last stone lands in an empty pit on your side, you capture that stone and all stones in the opposite pit
- Game End: The game ends when one player has no stones left in their small pits
- Winner: The player with the most stones in their store wins
- Mouse Click: Click on your pits to make moves
- New Game: Start a fresh game
- Help: Access game instructions and tutorial video
- Back to Menu: Return to the main menu
Gebeta.java- Main application classIntroPanel.java- Introduction screen with navigationGamePanel.java- Main game interfaceAboutPanel.java- Developer informationHelpPanel.java- Game instructions and helpGameBoard.java- Game logic and board managementPit.java- Individual pit representationStone.java- Stone object for visual representationBackground Image.png- Background image for the intro screen
The project demonstrates proper OOP principles:
- Encapsulation: Each class manages its own data and behavior
- Inheritance: Proper use of Java Swing component hierarchy
- Polymorphism: Different panel types implementing common interfaces
- Abstraction: Clean separation of game logic from UI components
For additional help, watch the tutorial video: Gebeta Tutorial
Enjoy playing Gebeta!