back to top

Fizz Buzz Oyunu Projesi

Fizz Buzz Nedir?

FizzBuzz, programlamaya yeni başlayanlar için hem eğlenceli hem de öğretici bir alıştırmadır. Bu problem, bir sayma oyununu kodlama konseptleriyle birleştirir. Temel göreviniz, 1’den başlayarak belirli bir sayıya kadar saymak, ancak 3’ün katlarını “Fizz,” 5’in katlarını “Buzz,” ve hem 3’e hem de 5’e bölünebilen sayıları “FizzBuzz” ile değiştirmektir. Bu eğlenceli alıştırma, döngüler, koşullu ifadeler ve algoritmik düşünme gibi temel programlama kavramlarını pekiştirmek için mükemmel bir fırsat sunar.

FizzBuzz, kodlama mülakatlarında sıkça kullanılır çünkü adayların kodlama becerilerini, problem çözme yeteneklerini ve temel programlama yapılarıyla tanışıklığını hızlıca değerlendirmek için ideal bir testtir. Hem yeni başlayanlar hem de deneyimli geliştiriciler için faydalı olan bu alıştırma, programlama dünyasına eğlenceli bir giriş sunar.

O zaman haydi başlayalım!

Detaylar ve Algoritma 

  1. Oyuncular 1’den başlayarak saymaya başlar.
  2. Eğer sayı 3’e bölünüyorsa, “Fizz” derler.
  3. Eğer sayı 5’e bölünüyorsa, “Buzz” derler.
  4. Eğer sayı hem 3’e hem de 5’e bölünüyorsa, “Fizz Buzz” derler.
  5. Bu koşullardan hiçbiri geçerli değilse, oyuncular sayıyı kendisi olarak söyler. 

Oyun bu kurallarla devam eder ve oyuncular sırasıyla bu kurallara uyarak sayar. Bu oyun genellikle programlama kavramlarını öğretmek ve iş görüşmelerinde kodlama becerilerini değerlendirmek için kullanılır. Burada bu oyunun algoritmasını görebilirsiniz.

Gerekli Bileşenler: 

1X PicoBricks

Bağlantı Şeması

PicoBricks’in MicroBlocks Kodları

PicoBricks’in MicroPython Kodları

from time import sleep
from machine import Pin
from machine import I2C
from picobricks import SSD1306_I2C
from picobricks import WS2812
import time

i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=200000)
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
ws2812 = WS2812(6, brightness = 1)

def write_fizzbuzz():
    global i
    oled.fill(0)
    oled.text("{}".format("FizzBuzz"), 0, 25)
    oled.show()
    ws2812.pixels_fill((255, 0, 0))
    ws2812.pixels_show()
    time.sleep((0.75))

def write_fizz():
    global i
    oled.fill(0)
    oled.text("{}".format("Fizz"), 0, 25)
    oled.show()
    ws2812.pixels_fill((51, 255, 51))
    ws2812.pixels_show()
    time.sleep((0.75))

def write_i():
    global i
    oled.fill(0)
    oled.text("{}".format(i), 0, 25)
    oled.show()
    ws2812.pixels_fill((0 ,0 ,0 ))
    ws2812.pixels_show()
    time.sleep((0.75))

def write_buzz():
    global i
    oled.fill(0)
    oled.text("{}".format("Buzz"), 0, 25)
    oled.show()
    ws2812.pixels_fill((51, 51, 255))
    ws2812.pixels_show()
    time.sleep((0.75))

oled.fill(0)
while True:
    for i in range((101)):
        if (i % 15) == (0):
            write_fizzbuzz()
        elif (i % 3) == (0):
            write_fizz()
        elif (i % 5) == (0):
            write_buzz()
        else:
            write_i()
    oled.fill(0)
    oled.text("{}".format("END"), 0, 25)
    oled.show()
    time.sleep((3))

PicoBricks’in PicoBlockly Kodları

PicoBricks’in Arduino C Kodları

#include <Adafruit_NeoPixel.h>
#define PIN 6 
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#include <Wire.h>
#include "ACROBOTIC_SSD1306.h"

void write_fizzbuzz() {
  oled.clearDisplay();
  oled.setTextXY(3, 1);
  oled.putString("FizzBuzz");
  pixels.setPixelColor(0,pixels.Color(255,0,0));
  pixels.show(); 
  delay(750);
}

void write_fizz() {
  oled.clearDisplay();
  oled.setTextXY(3, 1);
  oled.putString("Fizz");
  pixels.setPixelColor(0,pixels.Color(51,255,255));
  pixels.show(); 
  delay(750);
}

void write_buzz() {
  oled.clearDisplay();
  oled.setTextXY(3, 1);
  oled.putString("Buzz");
  pixels.setPixelColor(0,pixels.Color(51,51,255));
  pixels.show(); 
  delay(750);
}

void write_i(int i) {
  oled.clearDisplay();
  oled.setTextXY(3, 1);
  oled.putString(String(i));
  pixels.setPixelColor(0,pixels.Color(0,0,0));
  pixels.show(); 
  delay(750);
}

void setup() {
  //define dht sensor and Oled screen
  Serial.begin(115200);
  Wire.begin();  
  oled.init();                      
  oled.clearDisplay();
  pixels.begin();
  pixels.clear(); 
}

void loop() {
  oled.clearDisplay();

  for (int i = 1; i <= 100; i++) {
    if (i % 15 == 0) {
      write_fizzbuzz();
    } else if (i % 3 == 0) {
      write_fizz();
    } else if (i % 5 == 0) {
      write_buzz();
    } else {
      write_i(i);
    }
  }
  oled.clearDisplay();
  oled.setTextXY(3,1);
  oled.putString("THE END");
  delay(3000);
}

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz