📄 JB_165_TekBasamakliToplamaOyunu.java .java dosyası

⬇️ İndir
// JB_165_TekBasamakliToplamaOyunu.java /** * * Java Blackboard YouTube Channel * April 3, 2026 | 09:51:24 * * Java Code Link * java.zamkinos.com/Java_Tutorial/165/ * */ package ToplamaOyunu; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.Timer; public class JB_165_TekBasamakliToplamaOyunu { public static JFrame frame = new JFrame(); public static JPanel anaPanel = new JPanel(); public static JLabel geriSayimLabel = new JLabel(); public static JLabel soruIsaretiLabel = new JLabel(); public static JLabel kart1 = new JLabel(); public static JLabel kart2 = new JLabel(); public static JLabel kartToplam = new JLabel(); public static JButton againButton = new JButton(); // Eklenecek static değişkenler public static int sayi1, sayi2, toplam; public static int geriSayimSayaci; public static Timer geriSayimTimer; public static Random random = new Random(); public static void main(String[] args) { frame = new JFrame("Tek Basamaklı Sayıları Toplama Alıştırması | Java Blackboard [165]"); frame.setLayout(null); anaPanel = new JPanel(); anaPanel.setLayout(null); anaPanel.setBackground(new Color(1, 38, 38)); anaPanel.setBounds(20, 20, 1560, 830); anaPanel.setBorder(BorderFactory.createLineBorder(new Color(2, 89, 81), 5)); // ? label soruIsaretiLabel = new JLabel("?", SwingConstants.CENTER); soruIsaretiLabel.setFont(new Font("Times New Roman", Font.PLAIN, 280)); soruIsaretiLabel.setForeground(new Color(180, 190, 200)); soruIsaretiLabel.setBackground(new Color(40, 60, 70)); soruIsaretiLabel.setOpaque(true); soruIsaretiLabel.setBounds(1110, 100, 350, 600); soruIsaretiLabel.setVisible(true); // Geri sayım etiketi (sağ üst köşe) geriSayimLabel = new JLabel("?", SwingConstants.CENTER); geriSayimLabel.setFont(new Font("Times New Roman", Font.PLAIN, 120)); geriSayimLabel.setForeground(new Color(60, 80, 90)); geriSayimLabel.setBackground(new Color(40, 60, 70)); geriSayimLabel.setOpaque(true); geriSayimLabel.setBounds(1360, 100, 100, 120); geriSayimLabel.setVisible(true); int kartGgenislik = 350; int kartYukseklik = 600; int kartX = 50; int kartY = 100; int farkY = 0; int farkX = 450; // 1. Kart kart1 = new JLabel("?", SwingConstants.CENTER); kart1.setFont(new Font("Times New Roman", Font.BOLD, 280)); kart1.setForeground(new Color(242, 230, 206)); kart1.setBackground(new Color(40, 60, 70)); kart1.setOpaque(true); kart1.setBorder(BorderFactory.createLineBorder(new Color(242, 230, 206), 3)); kart1.setBounds(kartX, kartY, kartGgenislik, kartYukseklik); kartX = kartX + 380; kartY = kartY + 250; // + işareti JLabel artiLabel = new JLabel("+", SwingConstants.CENTER); artiLabel.setFont(new Font("Arial", Font.BOLD, 150)); artiLabel.setForeground(new Color(242, 230, 206)); artiLabel.setBounds(kartX, kartY, 120, 120); kartX = kartX + 150; kartY = kartY - 250; // 2. Kart kart2 = new JLabel("?", SwingConstants.CENTER); kart2.setFont(new Font("Times New Roman", Font.BOLD, 280)); kart2.setForeground(new Color(242, 230, 206)); kart2.setBackground(new Color(40, 60, 70)); kart2.setOpaque(true); kart2.setBorder(BorderFactory.createLineBorder(new Color(242, 230, 206), 3)); kart2.setBounds(kartX, kartY, kartGgenislik, kartYukseklik); kartX = kartX + 380; kartY = kartY + 250; // = işareti JLabel esittir = new JLabel("=", SwingConstants.CENTER); esittir.setFont(new Font("Arial", Font.BOLD, 150)); esittir.setForeground(new Color(242, 230, 206)); esittir.setBounds(kartX, kartY, 120, 120); kartX = kartX + 150; kartY = kartY - 250; System.out.println(kartX + ", " + kartY+ ",http " + kartGgenislik+ ", " + kartYukseklik); // Toplam kartı (başlangıçta görünmez) kartToplam = new JLabel("", SwingConstants.CENTER); kartToplam.setFont(new Font("Times New Roman", Font.BOLD, 280)); kartToplam.setForeground(new Color(255, 200, 100)); kartToplam.setBackground(new Color(40, 60, 70)); kartToplam.setOpaque(true); kartToplam.setBorder(BorderFactory.createLineBorder(new Color(255, 200, 100), 3)); kartToplam.setBounds(kartX, kartY, kartGgenislik, kartYukseklik); kartToplam.setVisible(false); kartX = 600; kartY = 750; // Again butonu againButton = new JButton("Again"); againButton.setFont(new Font("Helvetica", Font.PLAIN, 27)); againButton.setBounds(kartX, kartY, kartGgenislik, 40); againButton.setFocusPainted(false); againButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { restartGame(); } }); anaPanel.add(kart1); anaPanel.add(artiLabel); anaPanel.add(kart2); anaPanel.add(esittir); anaPanel.add(kartToplam); anaPanel.add(geriSayimLabel); anaPanel.add(soruIsaretiLabel); frame.add(anaPanel); frame.add(againButton); // Oyunu başlat startGame(); frame.setSize(1600, 900); frame.setLocationRelativeTo(null); frame.getContentPane().setBackground(new Color(200, 217, 176)); frame.setResizable(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } // startGame metodu public static void startGame() { // Yeni random sayılar üret (1-9 arası) sayi1 = random.nextInt(9) + 1; sayi2 = random.nextInt(9) + 1; toplam = sayi1 + sayi2; // Kartları göster kart1.setText(String.valueOf(sayi1)); kart2.setText(String.valueOf(sayi2)); kartToplam.setVisible(false); kartToplam.setText(""); // Geri sayımı başlat geriSayimSayaci = 3; geriSayimLabel.setText(String.valueOf(geriSayimSayaci)); geriSayimLabel.setVisible(true); if (geriSayimTimer != null && geriSayimTimer.isRunning()) { geriSayimTimer.stop(); } geriSayimTimer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { geriSayimSayaci--; if (geriSayimSayaci > 0) { geriSayimLabel.setText(String.valueOf(geriSayimSayaci)); } else if (geriSayimSayaci == 0) { geriSayimLabel.setText("0"); } else { // Geri sayım bitti geriSayimTimer.stop(); geriSayimLabel.setVisible(false); // Toplam kartını göster kartToplam.setText(String.valueOf(toplam)); kartToplam.setVisible(true); } } }); geriSayimTimer.start(); } // restartGame metodu public static void restartGame() { // Yeni sayılar üret sayi1 = random.nextInt(9) + 1; sayi2 = random.nextInt(9) + 1; toplam = sayi1 + sayi2; // Kartları güncelle kart1.setText(String.valueOf(sayi1)); kart2.setText(String.valueOf(sayi2)); kartToplam.setVisible(false); kartToplam.setText(""); // Geri sayımı sıfırla ve yeniden başlat geriSayimSayaci = 3; geriSayimLabel.setText(String.valueOf(geriSayimSayaci)); geriSayimLabel.setVisible(true); if (geriSayimTimer != null && geriSayimTimer.isRunning()) { geriSayimTimer.stop(); } geriSayimTimer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { geriSayimSayaci--; if (geriSayimSayaci > 0) { geriSayimLabel.setText(String.valueOf(geriSayimSayaci)); } else if (geriSayimSayaci == 0) { geriSayimLabel.setText("0"); } else { geriSayimTimer.stop(); geriSayimLabel.setVisible(false); kartToplam.setText(String.valueOf(toplam)); kartToplam.setVisible(true); } } }); geriSayimTimer.start(); } }