Python ile basit yılan oyunu yapımı (mantığı)

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
If u wanna
Seçkin Üye
Katılım
20 Şub 2016
Mesajlar
448
Çözümler
11
Tepki puanı
190
Ödüller
10
Sosyal
10 HİZMET YILI
Çocukluğumuzda en sevdiğimiz oyunlardan biri olan yılan oyununu gelin birlikte kodlayalım. :)
Sadece 2 modül içeri aktararak oyunumuzu python da kodlayacağız.



:yazı:
Öncelikle turtle'i kurmamız gerekiyor.
Python:
C:\Users\Admin>pip install turtle

Şimdi random modülünü kuruyoruz. Random modülünün amacı rastgele sayılar üretmemize yardımcı olmasıdır.
Python:
C:\Users\Admin>pip install random2

Kodlamaya başlayalım ve siz de deneyin sonrasında oyununuzun keyfini çıkarın :)
Python:
import turtle
import random
 
w = 500
h = 500
food_size = 10
delay = 100
 
offsets = {
    "up": (0, 20),
    "down": (0, -20),
    "left": (-20, 0),
    "right": (20, 0)
}
 
def reset():
    global snake, snake_dir, food_position, pen
    snake = [[0, 0], [0, 20], [0, 40], [0, 60], [0, 80]]
    snake_dir = "up"
    food_position = get_random_food_position()
    food.goto(food_position)
    move_snake()
  
def move_snake():
    global snake_dir
 
    new_head = snake[-1].copy()
    new_head[0] = snake[-1][0] + offsets[snake_dir][0]
    new_head[1] = snake[-1][1] + offsets[snake_dir][1]
 
  
    if new_head in snake[:-1]:
        reset()
    else:
        snake.append(new_head)
 
  
        if not food_collision():
            snake.pop(0)
 
 
        if snake[-1][0] > w / 2:
            snake[-1][0] -= w
        elif snake[-1][0] < - w / 2:
            snake[-1][0] += w
        elif snake[-1][1] > h / 2:
            snake[-1][1] -= h
        elif snake[-1][1] < -h / 2:
            snake[-1][1] += h
 
 
        pen.clearstamps()
 
      
        for segment in snake:
            pen.goto(segment[0], segment[1])
            pen.stamp()
 
      
        screen.update()
 
        turtle.ontimer(move_snake, delay)
 
def food_collision():
    global food_position
    if get_distance(snake[-1], food_position) < 20:
        food_position = get_random_food_position()
        food.goto(food_position)
        return True
    return False
 
def get_random_food_position():
    x = random.randint(- w / 2 + food_size, w / 2 - food_size)
    y = random.randint(- h / 2 + food_size, h / 2 - food_size)
    return (x, y)
 
def get_distance(pos1, pos2):
    x1, y1 = pos1
    x2, y2 = pos2
    distance = ((y2 - y1) ** 2 + (x2 - x1) ** 2) ** 0.5
    return distance
def go_up():
    global snake_dir
    if snake_dir != "down":
        snake_dir = "up"
 
def go_right():
    global snake_dir
    if snake_dir != "left":
        snake_dir = "right"
 
def go_down():
    global snake_dir
    if snake_dir!= "up":
        snake_dir = "down"
 
def go_left():
    global snake_dir
    if snake_dir != "right":
        snake_dir = "left"
 
 
screen = turtle.Screen()
screen.setup(w, h)
screen.title("Snake")
screen.bgcolor("blue")
screen.setup(500, 500)
screen.tracer(0)
 
 
pen = turtle.Turtle("square")
pen.penup()
 
 
food = turtle.Turtle()
food.shape("square")
food.color("yellow")
food.shapesize(food_size / 20)
food.penup()
 
 
screen.listen()
screen.onkey(go_up, "Up")
screen.onkey(go_right, "Right")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
 
 
reset()
turtle.done()

:resim:
Screenshot_1.png
 
Süper Üye
Katılım
23 Nis 2019
Mesajlar
981
Çözümler
2
Tepki puanı
79
Ödüller
6
7 HİZMET YILI
Çocukluğumuzda en sevdiğimiz oyunlardan biri olan yılan oyununu gelin birlikte kodlayalım. :)
Sadece 2 modül içeri aktararak oyunumuzu python da kodlayacağız.



:yazı:
Öncelikle turtle'i kurmamız gerekiyor.
Python:
C:\Users\Admin>pip install turtle

Şimdi random modülünü kuruyoruz. Random modülünün amacı rastgele sayılar üretmemize yardımcı olmasıdır.
Python:
C:\Users\Admin>pip install random2

Kodlamaya başlayalım ve siz de deneyin sonrasında oyununuzun keyfini çıkarın :)
Python:
import turtle
import random
 
w = 500
h = 500
food_size = 10
delay = 100
 
offsets = {
    "up": (0, 20),
    "down": (0, -20),
    "left": (-20, 0),
    "right": (20, 0)
}
 
def reset():
    global snake, snake_dir, food_position, pen
    snake = [[0, 0], [0, 20], [0, 40], [0, 60], [0, 80]]
    snake_dir = "up"
    food_position = get_random_food_position()
    food.goto(food_position)
    move_snake()
 
def move_snake():
    global snake_dir
 
    new_head = snake[-1].copy()
    new_head[0] = snake[-1][0] + offsets[snake_dir][0]
    new_head[1] = snake[-1][1] + offsets[snake_dir][1]
 
 
    if new_head in snake[:-1]:
        reset()
    else:
        snake.append(new_head)
 
 
        if not food_collision():
            snake.pop(0)
 
 
        if snake[-1][0] > w / 2:
            snake[-1][0] -= w
        elif snake[-1][0] < - w / 2:
            snake[-1][0] += w
        elif snake[-1][1] > h / 2:
            snake[-1][1] -= h
        elif snake[-1][1] < -h / 2:
            snake[-1][1] += h
 
 
        pen.clearstamps()
 
     
        for segment in snake:
            pen.goto(segment[0], segment[1])
            pen.stamp()
 
     
        screen.update()
 
        turtle.ontimer(move_snake, delay)
 
def food_collision():
    global food_position
    if get_distance(snake[-1], food_position) < 20:
        food_position = get_random_food_position()
        food.goto(food_position)
        return True
    return False
 
def get_random_food_position():
    x = random.randint(- w / 2 + food_size, w / 2 - food_size)
    y = random.randint(- h / 2 + food_size, h / 2 - food_size)
    return (x, y)
 
def get_distance(pos1, pos2):
    x1, y1 = pos1
    x2, y2 = pos2
    distance = ((y2 - y1) ** 2 + (x2 - x1) ** 2) ** 0.5
    return distance
def go_up():
    global snake_dir
    if snake_dir != "down":
        snake_dir = "up"
 
def go_right():
    global snake_dir
    if snake_dir != "left":
        snake_dir = "right"
 
def go_down():
    global snake_dir
    if snake_dir!= "up":
        snake_dir = "down"
 
def go_left():
    global snake_dir
    if snake_dir != "right":
        snake_dir = "left"
 
 
screen = turtle.Screen()
screen.setup(w, h)
screen.title("Snake")
screen.bgcolor("blue")
screen.setup(500, 500)
screen.tracer(0)
 
 
pen = turtle.Turtle("square")
pen.penup()
 
 
food = turtle.Turtle()
food.shape("square")
food.color("yellow")
food.shapesize(food_size / 20)
food.penup()
 
 
screen.listen()
screen.onkey(go_up, "Up")
screen.onkey(go_right, "Right")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
 
 
reset()
turtle.done()

eline sağlık yeni başlayanlar için iyi olmuş.
 
Banlı Üye
Katılım
1 Şub 2023
Mesajlar
546
Çözümler
1
Tepki puanı
34
Sosyal
3 HİZMET YILI
eline sağlık yararlı konu merakı olanlar için
 
birgünbirpalyaçovarmış
Süper Üye
Katılım
8 Eyl 2020
Mesajlar
1,499
Çözümler
8
Tepki puanı
137
Ödüller
7
Yaş
25
Sosyal
5 HİZMET YILI
reis eline sağlık bunu 6. sınıfta yapmayı öğetmişlerdi bize.
 
dany so hot she melt the snow
Süper Üye
Katılım
16 Eki 2020
Mesajlar
800
Çözümler
86
Tepki puanı
93
Ödüller
7
Sosyal
5 HİZMET YILI
Aklıma anneannemin 3310'u geliyor
 
Onaylı Üye
Katılım
26 Mar 2023
Mesajlar
58
Tepki puanı
4
Yaş
27
3 HİZMET YILI
Eline sağlık benim gibi yeni başlayanlar için işe yarar
 
Uzman Üye
Katılım
7 Ocak 2020
Mesajlar
156
Tepki puanı
2
Ödüller
5
Yaş
21
6 HİZMET YILI
Bilen arkadaşlar var
Post automatically merged:

tavsiye arkadaşlar var
 
Son düzenleme:
Uzman Üye
Katılım
25 Nis 2023
Mesajlar
171
Tepki puanı
18
Ödüller
2
3 HİZMET YILI
yeni basliyanlar icin eglenceli olmus
 
Üye
Katılım
5 Nis 2016
Mesajlar
26
Tepki puanı
0
Ödüller
7
Yaş
30
10 HİZMET YILI
yılların oyunu PYQT5 arayüzü ile yapılışını gösterir misin
 
Onaylı Üye
Katılım
16 Ocak 2024
Mesajlar
78
Tepki puanı
1
Ödüller
1
Yaş
26
2 HİZMET YILI
eline sağlık dostum sayende yılan oyunumu yaptım
 
Onaylı Üye
Katılım
6 Nis 2020
Mesajlar
80
Tepki puanı
4
Ödüller
5
Yaş
27
6 HİZMET YILI
daha da geliştirmek isteyenler için oyuna menu gibi şeyler tkinter aracılığı ile eklenebilir
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst