6 Prikaz slike i ispisivanje teksta u Pygameu

  • Slides: 38
Download presentation
6. Prikaz slike i ispisivanje teksta u Pygame-u

6. Prikaz slike i ispisivanje teksta u Pygame-u

Plan rada 1. Uvod u Pygame i instalacija 2. Koordinatni sistem i crtanje duži

Plan rada 1. Uvod u Pygame i instalacija 2. Koordinatni sistem i crtanje duži 3. Crtanje pravougaonika, kvadrata i mnogouglova 4. Crtanje krugova, elipsi i lukova 5. Struktura Pygame programa, podešavanje boja i generisanje slučajnih vrednosti 6. Prikaz slike i ispisivanje teksta u Pygame-u 7. Crtanje grafike korištenjem petlji i kombinovanje raznih geometrijskih oblika 8. Animacije i simulacije 9. Jednostavne igrice 10. Reagovanje na događaje sa miša ili tastature 11. Jednostavne igrice 12. Jednostavne igrice

Naša stranica na sajtu https: //www. procoding. rs/pygame-kurs-programiranje-2 d-grafike-animacija-i-igrica/

Naša stranica na sajtu https: //www. procoding. rs/pygame-kurs-programiranje-2 d-grafike-animacija-i-igrica/

Domaći zadatak

Domaći zadatak

Pydroid – aplikacija u androidu za python i pygame • Preuzima se sa play

Pydroid – aplikacija u androidu za python i pygame • Preuzima se sa play prodavnice • Samo početni deo python/pyagame programa se razlikuje

import pygame_sdl 2 Primer u Pydroid-u pygame_sdl 2. import_as_pygame() import sys import pygame from

import pygame_sdl 2 Primer u Pydroid-u pygame_sdl 2. import_as_pygame() import sys import pygame from pygame. locals import* pygame. init() prozor=pygame. display. set_mode((720, 1480)) while True: prozor. fill((0, 255, 0)) pygame. draw. line(prozor, pygame. Color("red"), (0, 0), (720, 1480), 3) pygame. draw. line(prozor, pygame. Color("red"), (720, 0), (0, 1480), 3) pygame. draw. rect(prozor, pygame. Color("red"), (50, 300, 300), 5) pygame. display. update()

Komande za instalaciju Py. Game pip 3 install pygame py -3 -m pip install

Komande za instalaciju Py. Game pip 3 install pygame py -3 -m pip install pygame py -m pip install pygame

Šta je PIP? PIP je softverski menadžer za instalaciju Python paketa(biblioteka) kao npr. Py.

Šta je PIP? PIP je softverski menadžer za instalaciju Python paketa(biblioteka) kao npr. Py. Game • Naredba pip –version proverava verziju pip • Naredba pip list izlistava sve pip pakete tj, biblioteke instalirane na vašem računaru

Naredbe u Py. Game-u NAREDBA OBJAŠNJENJE import pygame Importuje tj. uvozi biblioteku pygame u

Naredbe u Py. Game-u NAREDBA OBJAŠNJENJE import pygame Importuje tj. uvozi biblioteku pygame u program pygame. init() Inicijalizuje biblioteku prozor=pygame. display. set_mode((200, 200)) Prikazuje prozor sa dimenzijama 200 x 200 piksela pygame. display. set_caption("NASLOV PROZORA") Upisuje u title bar (traku naslova) prozor. fill(pygame. Color(“white”)) Boji prozor u datoj boji pygame. draw. line() Crta duž pygame. display. update() osvežavanje prozora i prikazivanje novog sadržaja pygame. time. wait(5000) Pauzira program na 5 sekundi pygame. quit() Isključivanje biblioteke

KORACI U REALIZACIJI PROGRAMA 1. INICIJALIZACIJA BIBLIOTEKE Py. Game 2. OTVARANJE PROZORA, PODEŠAVANJE DIMENZIJA

KORACI U REALIZACIJI PROGRAMA 1. INICIJALIZACIJA BIBLIOTEKE Py. Game 2. OTVARANJE PROZORA, PODEŠAVANJE DIMENZIJA I NASLOVA 3. ISCRTAVANJE NEKOG SADRZAJA U PROZORU 4. PAUZIRANJE I ČEKANJE NA DOGADJAJ SA MIŠA ILI TASTATURE 5. ZATVARANJE PROGRAMA

Py. Game KOORDINATNI SISTEM • U Py. Game prozoru koordinatni sistem je malo drugačiji

Py. Game KOORDINATNI SISTEM • U Py. Game prozoru koordinatni sistem je malo drugačiji od pravouglog koordinatnog sistema • Merna jedinica je 1 piksel a položaj svake tačke je određen uređenim parom koordinata (x, y) • U gornjem levom uglu Py. Game prozora je tačka (0, 0) • Koordinata x raste kada se pomeramo u desno • Koordinata y raste kada se pomeramo na dole Nastavnik Informatike i računarstva dipl. ing. Sead Gicić 11

Neke od naredbi crtanje linije: pygame. draw. line(prozor, pygame. Color("red"), (50, 50), (450, 450),

Neke od naredbi crtanje linije: pygame. draw. line(prozor, pygame. Color("red"), (50, 50), (450, 450), 3) crtanje pravougaonika: pygame. draw. rect(prozor, pygame. Color("blue"), (10, 200, 200), 5) crtanje mnogougla: pygame. draw. polygon(prozor, pygame. Color(“red”), temena) crtanje kruga: pygame. draw. circle(prozor, pygame. Color("blue"), (krug_c_x, krug_c_y), 50, 3) crtanje elipse: pygame. draw. elipse(prozor, pygame. Color("blue"), (krug_c_x, krug_c_y), 50, 3) crtanje luka: pygame. draw. arc(prozor, pygame. Color("blue"), (50, 300, 200), math. radians(150), 1)

1. STRUKTURA PROGRAMA KOJI SE ZATVARA SA CLOSE(X) sa funkcijom event. wait() # 1

1. STRUKTURA PROGRAMA KOJI SE ZATVARA SA CLOSE(X) sa funkcijom event. wait() # 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("NASLOV PROZORA") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) pygame. draw. line(prozor, pygame. Color("red"), (50, 50), (450, 450), 3 ) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit()

Petlja WHILE while (uslov): naredba (sve dok je ispunjen uslov, petlja će ponavljati naredbu)

Petlja WHILE while (uslov): naredba (sve dok je ispunjen uslov, petlja će ponavljati naredbu) while (uslov): naredba 1 naredba 2. . naredba n

2. STRUKTURA PROGRAMA KOJI SE ZATVARA SA CLOSE(X) sa petljama while i for i

2. STRUKTURA PROGRAMA KOJI SE ZATVARA SA CLOSE(X) sa petljama while i for i funkcijom event. get() event. get # 1 OTVARANJE PROZORA, DIMENZIJE I NASLOV import pygame. init() prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("NASLOV PROZORA") # 2 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) pygame. display. update() # 3 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE pokrenuta_igrica=True # napravimo promenljivu while pokrenuta_igrica: pass for dogadjaj in pygame. event. get(): if dogadjaj. type==pygame. QUIT: pokrenuta_igrica=False # 4 ZATVARANJE PROGRAMA pygame. quit()

PETLJA FOR print(“Zdravo”) print(“Zdravo”) -----------------------for i in range(5): # ponovi 5 puta: print(“Zdravo”)

PETLJA FOR print(“Zdravo”) print(“Zdravo”) -----------------------for i in range(5): # ponovi 5 puta: print(“Zdravo”)

PETLJA FOR sa početnom i krajnom vrednošću i korakom for i in range(1, 11,

PETLJA FOR sa početnom i krajnom vrednošću i korakom for i in range(1, 11, 2): # 1 je početna vrednost, print(i) #11 je krajnja vrednost +1 # 2 je korak štampanja

LISTE neka_lista=[podatak 1, podatak 2, . . . , podatak 5] indeksi 0 1

LISTE neka_lista=[podatak 1, podatak 2, . . . , podatak 5] indeksi 0 1 1/29/2022 Nastavnik Informatike i računarstva dipl. ing. Sead Gicić . . . 4 18

# 1 OTVARANJE PROZORA, DIMENZIJE I NASLOV import pygame. init() prozor=pygame. display. set_mode((500, 500))

# 1 OTVARANJE PROZORA, DIMENZIJE I NASLOV import pygame. init() prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("NASLOV PROZORA") # 2 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) pygame. draw. line(prozor, pygame. Color("red"), (50, 50), (450, 450), 3) pygame. display. update() # 3 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE pokrenuta_igrica=True while pokrenuta_igrica: kliknut_taster=pygame. key. get_pressed() pygame. key. set_repeat for dogadjaj in pygame. event. get(): if dogadjaj. type==pygame. QUIT: pokrenuta_igrica=False if kliknut_taster[pygame. K_ESCAPE]: pokrenuta_igrica=False # 4 ZATVARANJE PROGRAMA pygame. quit() Struktura programa sa zatvaranjem na X i ESC

RGB model Colour picker

RGB model Colour picker

Colour picker od 0 do 255 prozor. fill(pygame. Color(13, 113, 213)) od 0 do

Colour picker od 0 do 255 prozor. fill(pygame. Color(13, 113, 213)) od 0 do 255 pygame. draw. line(prozor, pygame. Color(20, 120, 90), (100, 180), (150, 150), 5)

Slučajno generisane vrednosti Kad se nešto dešava u neočekivanom redosledu kažemo da je slučajno(eng.

Slučajno generisane vrednosti Kad se nešto dešava u neočekivanom redosledu kažemo da je slučajno(eng. random). Da bi računarske igrice bile zanimljivije u njeh se dodaju neki elementi slučajnosti. U programskom jeziku Python za dobijanje slučajnih vrednosti se koristi bibilioteka random. U okviru ove biblioteke koristi se funkcija randint(a, b) primer: x=random. randint(1, 100)

Učitavanje i prikaz slike učitavanje slike: slika=pygame. image. load(jabuka. png) prikaz učitane slike: prozor.

Učitavanje i prikaz slike učitavanje slike: slika=pygame. image. load(jabuka. png) prikaz učitane slike: prozor. blit(slika, (x, y))

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POSTAVLJAMO SLIKU JABUKE U PROZORU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) slika=pygame. image. load("jabuka. png") x=0 # ZA SLIKU SMO UZELI VRSNU LEVU TACKU y=0 prozor. blit(slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POSTAVLJAMO SLIKU MAKAZA U PROZORU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) slika=pygame. image. load("scissors. png") x=500 -67 y=0 prozor. blit(slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POSTAVLJAMO SLIKU BEOGRADA U DONJEM DESNOM UGLU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) slika=pygame. image. load("beograd 300 x 157. jpg") x=500 -300 # ZA SLIKU SMO UZELI VRSNU LEVU TACKU y=500 -157 prozor. blit(slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POSTAVLJAMO SLIKU TUTINA U DONJEM LEVOM UGLU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) slika=pygame. image. load("tutin 300 x 175. jpg") x=0 y=500 -175 prozor. blit(slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

Određivanje širine i visine slike pomoću funkcije širina slike: get. width() visina slike: get.

Određivanje širine i visine slike pomoću funkcije širina slike: get. width() visina slike: get. height()

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POSTAVLJAMO SLIKU U CENTAR I COSKOVE") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) # 1 centar slika 1=pygame. image. load("novi pazar 100 x 56. jpg") x=(500 -slika 1. get_width())/2 y=(500 -slika 1. get_height())/2 prozor. blit(slika 1, (x, y)) # 2 gornji levi slika 2=pygame. image. load("macka. png") x=0 y=0 prozor. blit(slika 2, (x, y)) # 3 gornji desni slika 3=pygame. image. load("rock. png") x=500 -slika 3. get_width() y=0 prozor. blit(slika 3, (x, y)) # 4 donji levi slika 4=pygame. image. load("scissors. png") x=0 y=500 -slika 4. get_height() prozor. blit(slika 4, (x, y)) # 5 donji desni slika 5=pygame. image. load("paper. png") x=500 -slika 5. get_width() y=500 -slika 5. get_height() prozor. blit(slika 5, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

Ispisivanje teksta - određivanje fonta font=pygame. font. Sys. Font("Arial", 40) - određivanje poruka="Zdravo Py.

Ispisivanje teksta - određivanje fonta font=pygame. font. Sys. Font("Arial", 40) - određivanje poruka="Zdravo Py. Game!" - kreiranje slike koja će predstavljati poruku ispisanu nekom bojom tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) - prikaz poruke na odgovarajućem mestu na ekranu prozor. blit(tekst_kao_slika, (20, 20))

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("ISPISUJEMO PORUKU U PROZORU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) font=pygame. font. Sys. Font("Arial", 40) poruka="Zdravo Py. Game-aši!" tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) prozor. blit(tekst_kao_slika, (20, 20)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("ISPISUJEMO PORUKU U PROZORU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) font=pygame. font. Sys. Font("Arial", 40) poruka="Zdravo Py. Game-aši!" tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) (sir_sl, vis_sl)=(tekst_kao_slika. get_width(), tekst_kao_slika. get_height()) (x, y)=((500 -sir_sl)/2, 20) prozor. blit(tekst_kao_slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("ISPISUJEMO PORUKU U PROZORU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) font=pygame. font. Sys. Font("Arial", 40) poruka="Zdravo Py. Game-aši!" tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) (sir_sl, vis_sl)=(tekst_kao_slika. get_width(), tekst_kao_slika. get_height()) (x, y)=((500 -sir_sl)/2, (500 -vis_sl)/2) prozor. blit(tekst_kao_slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("ISPISUJEMO PORUKU U PROZORU") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) font=pygame. font. Sys. Font("Arial", 40) poruka="Zdravo Py. Game-aši!" tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) (sir_sl, vis_sl)=(tekst_kao_slika. get_width(), tekst_kao_slika. get_height()) (x, y)=((500 -sir_sl)/2, (500 -vis_sl)) prozor. blit(tekst_kao_slika, (x, y)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE

# 1 INICIJALIZACIJA BIBLIOTEKE Py. Game import pygame. init() # 2 OTVARANJE PROZORA, DIMENZIJE I NASLOV prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POSTAVLJAMO SLIKU RASKE U CENTAR") # 3 ISCRTAVANJE NEKOG SADRZAJA U PROZORU prozor. fill(pygame. Color("white")) #---- SLIKA -----slika=pygame. image. load("raska 240 x 180. jpg") x=(500 -slika. get_width())/2 y=(500 -slika. get_height())/2 prozor. blit(slika, (x, y)) #----- TEKST ----font=pygame. font. Sys. Font("Arial", 40) poruka="Zdravo Raška!" tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) (sir_sl, vis_sl)=(tekst_kao_slika. get_width(), tekst_kao_slika. get_height()) (xp, yp)=((500 -sir_sl)/2, 20) prozor. blit(tekst_kao_slika, (xp, yp)) pygame. display. update() # 4 PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass # 5 ZATVARANJE PROGRAMA pygame. quit() Primer programa

import pygame. init() prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POMERAMO TEKST") prozor. fill(pygame. Color("white"))

import pygame. init() prozor=pygame. display. set_mode((500, 500)) pygame. display. set_caption("POMERAMO TEKST") prozor. fill(pygame. Color("white")) font=pygame. font. Sys. Font("Arial", 40) poruka="Pomera se tekst!" tekst_kao_slika=font. render(poruka, True, pygame. Color("blue")) (sirina_teksta, visina_teksta)=(tekst_kao_slika. get_width(), tekst_kao_slika. get_height()) (x, y)=((500 -sirina_teksta)/2, (500 -visina_teksta)/2) for i in range(5): prozor. fill(pygame. Color("white")) prozor. blit(tekst_kao_slika, (x, y)) x=x+20 y=y+20 pygame. display. update() pygame. time. wait(1000) pygame. display. update() # PAUZIRANJE I CEKANJE NA DOGADJAJ SA MISA ILI TASTATURE while pygame. event. wait(). type != pygame. QUIT: pass pygame. quit() Primer programa sa pomeranjem teksta