📄 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();
}
}