Programozás

Ezen az oldalon programozással kapcsolatos oktatási anyagokat találsz.

Tananyagok

Micsoda Link vagy fájl
Tankönyvben nkp Programozás
Okosgyűjtemény nkp Programozás - Alapok
Python www.python.org
Python W3School www.w3schools.com/python/
Online Python www.online-python.com
Pico 8 Education www.pico-8-edu.com
PICO-8 Letöltések

Pico-8 5 percben:

Játék fejlesztés Pico-8 -al:

TIC-80 tic80.com/create
makecode.microbit.org
scratch.mit.edu
Microbit prezi microbit_feladatok_középsuli.pptx
Bevezetés a programozás világába Bevezetés a Programozás Világába.pptx
Üdvözlés 3 féle nyelven welcome.html
welcome.xlsm
welcome.py
Programozási nyelvek megoszlása

Feladatok

Feladat Leírás 🔒 Forrás fájl 🔒
Egyszerű feladatok prog_feladatok.pdf nope.py

Godot

Feladat Forrás fájlok
Godot 4.4.1 telepítése godot_telepites.pdf
Mario ugrálós Mario assets
mario3.gd mario4.gd

Példaprogramok

Sima egyszerű Helló Világ

# Helló Világ, mindig ezzel kezdünk :-D
print("Hello Világ")

Üdvözlő

# Üdvözlés
nev = input("Kérlek, add meg a neved:")
print("Üdvözöllek, ", nev, "!")

Feltételes elágazások (if-then-else)

# Bekérjük, hogy mennyi csokit evett a felhasználó
csoki = int(input("Mennyi csokit ettél ma? (0-10 közötti szám): "))

# Feltételes elágazás
if csoki == 0:
    print("Hős vagy! Csak nem diétázol? 🦸")
elif 1 <= csoki <= 3:
    print("Jól van, még belefér egy kis öröm. 😊")
elif 4 <= csoki <= 6:
    print("Na na, vigyázz, nehogy elszállj a cukortól! 🚀")
elif 7 <= csoki <= 9:
    print("Biztos vagy benne, hogy nem egy csokigyárban dolgozol? 🏭")
else:
    print("10 csoki? Gratulálok, te vagy a Csoki Császár! 👑")

Feltételes elágazások (match-case, switch-case)

# Bekérjük, hogy mennyi csokit evett a felhasználó
csoki = int(input("Mennyi csokit ettél ma? (0-10 közötti szám): "))

# Match-case szerkezet
match csoki:
    case 0:
        print("Hős vagy! Csak nem diétázol? 🦸")
    case 1 | 2 | 3:  # 1, 2 vagy 3 csoki
        print("Jól van, még belefér egy kis öröm. 😊")
    case 4 | 5 | 6:  # 4, 5 vagy 6 csoki
        print("Na na, vigyázz, nehogy elszállj a cukortól! 🚀")
    case 7 | 8 | 9:  # 7, 8 vagy 9 csoki
        print("Biztos vagy benne, hogy nem egy csokigyárban dolgozol? 🏭")
    case 10:  # Pontosan 10 csoki
        print("10 csoki? Gratulálok, te vagy a Csoki Császár! 👑")
    case _:  # Minden más eset (pl. 10-nél több)
        print("Hát, te már nem is ember vagy, hanem egy csokigép! 🤖")

Ciklusok

# 1. For ciklus 1-től 10-ig
print("For ciklus 1-től 10-ig:")
for i in range(1, 11):  # range(1, 11) -> 1-től 10-ig
    print(i, end=" ")
print("\n")  # Új sor

# 2. While ciklus 1-től 10-ig
print("While ciklus 1-től 10-ig:")
i = 1
while i <= 10:
    print(i, end=" ")
    i += 1  # i növelése 1-gyel
print("\n")  # Új sor

# 3. For ciklus 10-től 1-ig
print("For ciklus 10-től 1-ig:")
for i in range(10, 0, -1):  # range(10, 0, -1) -> 10-től 1-ig, -1-es lépéssel
    print(i, end=" ")
print("\n")  # Új sor

# 4. While ciklus 10-től 1-ig
print("While ciklus 10-től 1-ig:")
i = 10
while i >= 1:
    print(i, end=" ")
    i -= 1  # i csökkentése 1-gyel
print("\n")  # Új sor

Prímszámok listázása 1000-ig

Ez a program, amely kilistázza az összes prímszámot 1000-ig. A program a prímszámok megtalálására a klasszikus "Sieve of Eratosthenes" (Eratoszthenész szitája) algoritmust használja, amely hatékony és könnyen megvalósítható.

def primes_up_to_1000():
    # Egy lista, amely jelzi, hogy egy szám prím-e (True/False)
    is_prime = [True] * 1001  # 0-tól 1000-ig
    is_prime[0] = is_prime[1] = False  # 0 és 1 nem prímszámok

    # Eratoszthenész szitája
    for number in range(2, int(1000**0.5) + 1):  # Csak a négyzetgyökig megyünk
        if is_prime[number]:  # Ha a szám prím
            for multiple in range(number * number, 1001, number):  # A többszöröseit kizárjuk
                is_prime[multiple] = False

    # Prímszámok kigyűjtése
    primes = [number for number, prime in enumerate(is_prime) if prime]
    return primes

# Prímszámok listázása
primes = primes_up_to_1000()
print("Prímszámok 1000-ig:")
print(primes)

Számkitalálós játék

Ebben a játékban a gép gondol egy számra 1 és 100 között. A játékosnak ezt a számot kell kitalálni.

import random

# Véletlenszerű szám generálása 1 és 100 között
szam = random.randint(1, 100)
tipp = None  # Kezdetben nincs tipp

print("Üdvözöllek a számkitalálós játékban!")
print("Gondoltam egy számra 1 és 100 között. Próbáld meg kitalálni!")

# Addig fut a ciklus, amíg a játékos el nem találja a számot
while tipp != szam:
    # Játékos tippjének bekérése
    tipp = int(input("Add meg a tipped: "))

    # Tipp ellenőrzése
    if tipp < szam:
        print("A tipped kisebb, mint a gondolt szám. Próbáld újra!")
    elif tipp > szam:
        print("A tipped nagyobb, mint a gondolt szám. Próbáld újra!")
    else:
        print(f"Gratulálok, eltaláltad! A gondolt szám {szam} volt.")

Kő-Papír-Olló játék

Ez egy klasszikus játék, ahol a játékos a gép ellen játszik.

import random

# Lehetséges választások
valasztasok = ["kő", "papír", "olló"]

print("Üdvözöllek a Kő-Papír-Olló játékban!")
jatekos_valasztasa = input("Válassz: kő, papír vagy olló: ").lower()
gep_valasztasa = random.choice(valasztasok)

print(f"A gép választása: {gep_valasztasa}")

# Eredmény meghatározása
if jatekos_valasztasa == gep_valasztasa:
    print("Döntetlen!")
elif (jatekos_valasztasa == "kő" and gep_valasztasa == "olló") or \
        (jatekos_valasztasa == "papír" and gep_valasztasa == "kő") or \
        (jatekos_valasztasa == "olló" and gep_valasztasa == "papír"):
    print("Nyertél!")
else:
    print("Vesztettél!")

Számológép

Egy egyszerű számológép, amely alapműveleteket végez.

print("Egyszerű számológép")
szam1 = float(input("Add meg az első számot: "))
muvelet = input("Válassz műveletet (+, -, *, /): ")
szam2 = float(input("Add meg a második számot: "))

if muvelet == "+":
    eredmeny = szam1 + szam2
elif muvelet == "-":
    eredmeny = szam1 - szam2
elif muvelet == "*":
    eredmeny = szam1 * szam2
elif muvelet == "/":
    if szam2 != 0:
        eredmeny = szam1 / szam2
    else:
        eredmeny = "Hiba: Nullával való osztás!"
else:
    eredmeny = "Érvénytelen művelet!"

print(f"Eredmény: {eredmeny}")

Kalandjáték

A szöveges kalandjátékok (angolul text-based adventure games) az 1970-es és 1980-as években váltak népszerűvé...

# A helyszínek és az útvonalak dictionary-ben tárolva
helyszinek = {
    "erdő": {
        "leírás": "Egy sötét erdőben találod magad. Két út áll előtted: balra és jobbra.",
        "lehetőségek": {"balra": "folyó", "jobbra": "barlang"}
    },
    "folyó": {
        "leírás": "Egy folyóhoz értél. Átúszol a folyón, vagy keresel egy hidat?",
        "lehetőségek": {"uszás": "vesztes", "híd": "nyertes"}
    },
    "barlang": {
        "leírás": "Egy sötét barlanghoz értél. Belemész a barlangba, vagy visszafordulsz?",
        "lehetőségek": {"barlang": "nyertes", "vissza": "vesztes"}
    },
    "nyertes": {
        "leírás": "Gratulálok, nyertél! A kaland sikeresen véget ért.",
        "lehetőségek": {}
    },
    "vesztes": {
        "leírás": "Sajnos vesztettél. A kaland véget ért.",
        "lehetőségek": {}
    }
}

# Kezdő helyszín
jelenlegi_hely = "erdő"

# Játék ciklus
while True:
    # Helyszín leírásának kiírása
    print(helyszinek[jelenlegi_hely]["leírás"])

    # Ha nincsenek további lehetőségek, a játék véget ér
    if not helyszinek[jelenlegi_hely]["lehetőségek"]:
        break

    # Lehetőségek kiírása
    print("Lehetőségeid:")
    for lehetoseg, cel in helyszinek[jelenlegi_hely]["lehetőségek"].items():
        print(f"- {lehetoseg}")

    # Felhasználó választása
    valasztas = input("Mit választasz? ").lower()

    # Ellenőrizzük, hogy a választás érvényes-e
    if valasztas in helyszinek[jelenlegi_hely]["lehetőségek"]:
        jelenlegi_hely = helyszinek[jelenlegi_hely]["lehetőségek"][valasztas]
    else:
        print("Érvénytelen választás. Próbáld újra!")

Piros kör 🔴

Az alábbi programokban megnézzük a Python grafikai és animációs képességeit pár egyszerű példán keresztül.

# Piros kör a teknöc könyvtár felhasználásával
import turtle

# Turtle beállítása
t = turtle.Turtle()
t.shape("turtle")  # Teknőc alak beállítása
t.color("red")     # A toll színének beállítása pirosra

# Kör rajzolása
t.begin_fill()     # Kitöltés kezdése
t.circle(100)      # 100 pixel sugarú kör rajzolása
t.end_fill()       # Kitöltés befejezése

# Ablak bezárása kattintásra
turtle.done()

Piros kör 🔴 tkinter könyvtárral

# Piros kör a tkinter könyvtár felhasználásával
import tkinter as tk

# Fő ablak létrehozása
root = tk.Tk()
root.title("Piros kör")  # Az ablak címe

# Vászon létrehozása
canvas = tk.Canvas(root, width=200, height=200, bg="white")
canvas.pack()

# Kör rajzolása
canvas.create_oval(50, 50, 150, 150, fill="red", outline="red")  # (x1, y1, x2, y2) határoló téglalap

# Fő ciklus indítása
root.mainloop()

Interaktív kör 🔴 🔵 🟢 🟡

# Interaktív kör a tkinter könyvtár felhasználásával
import tkinter as tk
from tkinter import simpledialog

# Fő ablak létrehozása
root = tk.Tk()
root.title("Interaktív kör")

# Vászon létrehozása
canvas = tk.Canvas(root, width=200, height=200, bg="white")
canvas.pack()

# Kör méretének és színének bekérése
sugar = simpledialog.askinteger("Kör sugara", "Add meg a kör sugarát (pixelben):", minvalue=10, maxvalue=100)
szin = simpledialog.askstring("Kör színe", "Add meg a kör színét (pl. red, blue, green):")

# Kör rajzolása
x1 = 100 - sugar
y1 = 100 - sugar
x2 = 100 + sugar
y2 = 100 + sugar
canvas.create_oval(x1, y1, x2, y2, fill=szin, outline=szin)

# Fő ciklus indítása
root.mainloop()

Pattogó kör ((((🔴

import tkinter as tk

# Ablak létrehozása
root = tk.Tk()
root.title("Pattogó piros kör")
canvas = tk.Canvas(root, width=400, height=400, bg="white")
canvas.pack()

# Kör létrehozása
kör = canvas.create_oval(10, 10, 60, 60, fill="red")

# Kezdeti sebesség és irány
sebesség_x = 5  # vízszintes sebesség
sebesség_y = 5  # függőleges sebesség

def mozgat():
    global sebesség_x, sebesség_y

    # Kör pozíciójának lekérése
    pozíció = canvas.coords(kör)
    x1, y1, x2, y2 = pozíció

    # Ütközés észlelése a képernyő szélein
    if x1 <= 0 or x2 >= 400:  # Bal vagy jobb szél
        sebesség_x *= -1  # Vízszintes irány megfordítása
    if y1 <= 0 or y2 >= 400:  # Felső vagy alsó szél
        sebesség_y *= -1  # Függőleges irány megfordítása

    # Kör mozgatása
    canvas.move(kör, sebesség_x, sebesség_y)

    # Animáció frissítése (20 ms után újra meghívjuk a mozgat függvényt)
    root.after(20, mozgat)

# Animáció indítása
mozgat()

# Fő ciklus indítása
root.mainloop()

Pattogó piros kör 🔴 és mozgatható ütő

import tkinter as tk

# Ablak létrehozása
root = tk.Tk()
root.title("Pattogó piros kör és ütő")
canvas = tk.Canvas(root, width=400, height=400, bg="white")
canvas.pack()

# Kör létrehozása
kör = canvas.create_oval(10, 10, 60, 60, fill="red")

# Ütő létrehozása
ütő = canvas.create_rectangle(150, 380, 250, 390, fill="blue")

# Kezdeti sebesség és irány
sebesség_x = 5  # vízszintes sebesség
sebesség_y = 5  # függőleges sebesség

# Ütő mozgatása
def ütő_mozgat(event):
    pozíció = canvas.coords(ütő)
    if event.keysym == "Left" and pozíció[0] > 0:  # Balra nyíl
        canvas.move(ütő, -20, 0)
    elif event.keysym == "Right" and pozíció[2] < 400:  # Jobbra nyíl
        canvas.move(ütő, 20, 0)

# Billentyű események figyelése
root.bind("", ütő_mozgat)
root.bind("", ütő_mozgat)

def mozgat():
    global sebesség_x, sebesség_y

    # Kör pozíciójának lekérése
    pozíció = canvas.coords(kör)
    x1, y1, x2, y2 = pozíció

    # Ütközés észlelése a képernyő szélein
    if x1 <= 0 or x2 >= 400:  # Bal vagy jobb szél
        sebesség_x *= -1  # Vízszintes irány megfordítása
    if y1 <= 0:  # Felső szél
        sebesség_y *= -1  # Függőleges irány megfordítása
    elif y2 >= 400:  # Alsó szél (játék vége)
        print("Játék vége! A kör leesett.")
        root.destroy()  # Ablak bezárása
        return

    # Ütközés észlelése az ütővel
    ütő_pozíció = canvas.coords(ütő)
    if y2 >= ütő_pozíció[1] and x1 >= ütő_pozíció[0] and x2 <= ütő_pozíció[2]:
        sebesség_y *= -1  # Függőleges irány megfordítása

    # Kör mozgatása
    canvas.move(kör, sebesség_x, sebesség_y)

    # Animáció frissítése (20 ms után újra meghívjuk a mozgat függvényt)
    root.after(20, mozgat)

# Animáció indítása
mozgat()

# Fő ciklus indítása
root.mainloop()

Add meg a 4 jegyű kódot: