ich habe mich in den letzten Wochen mal ein bisschen hingesetzt und habe ein kleines Chat programm geschrieben.
Nun möchte ich von euch wissen wie ihr es findet, was ihr verbessern würdet und auch wenn ihr es schon wisst wie man es verbessern könnte.
Ihr braucht nur das modul pygame
Hier ist schonmal der code
alle drei dateien müssen in einen ordner und evtl muss in dem ersten Programm auch in zeile 73 der Pfad der datei angegeben sein.
das chatprogramm selber das ihr nennen könnt wie ihr wollt:
Code: Alles auswählen
# -*- coding: utf-8 -*-
class Chat:
def __init__(self):
from ftplib import FTP
from cStringIO import StringIO
import time
self.ftp=FTP(server)
self.ftp.connect()
self.ftp.login(benutzer,passwort)
self.ftp.cwd(server_pfad)
self.ftp1=FTP(server)
self.ftp1.connect()
self.ftp1.login(benutzer,passwort)
self.ftp1.cwd(server_pfad)
def chat_download(self,server,benutzer,passwort,server_pfad,server_datei):
from cStringIO import StringIO
datei= StringIO()
index=0
nachricht=""
print "Bereit..."
while True:
datei= StringIO()
print "Empfange..."
self.ftp.retrbinary("RETR "+server_datei,datei.write)
print "Angekommen..."
if nachricht == datei.getvalue():
pass
elif nachricht != datei.getvalue():
global nachrichten_text
nachrichten_text = datei.getvalue()
set_bildschirm()
set_schrift()
nachricht= datei.getvalue()
time.sleep(4)
datei.close()
def chat_upload(self,server,benutzer,passwort,server_pfad,server_datei,string):
from cStringIO import StringIO
nachricht=""
datei2 = StringIO()
self.ftp1.retrbinary("RETR "+server_datei,datei2.write)
nachricht = datei2.getvalue()
nachricht += string+"\n"
datei= StringIO(nachricht)
self.ftp1.storbinary("Stor "+server_datei,datei)#Server Datei
datei.close()
datei= StringIO()
set_bildschirm()
set_schrift()
for i in range(9):
datei= StringIO()
self.ftp.retrbinary("RETR "+server_datei,datei.write)
global nachrichten_text
nachrichten_text = datei.getvalue()
set_bildschirm()
set_schrift()
datei.close
print "Gesendet"
def chat_leeren(self,server,benutzer,passwort,server_pfad,server_datei):
from cStringIO import StringIO
nachricht = ""
datei= StringIO(nachricht)
self.ftp1.storbinary("Stor "+server_datei,datei)#Server Datei
datei.close()
set_bildschirm()
set_schrift()
datei= StringIO()
self.ftp.retrbinary("RETR "+server_datei,datei.write)
global nachrichten_text
nachrichten_text = datei.getvalue()
import pygame,sys,random,thread
from pygame_eingabe import event2zeichen
#-----------------------------------Erstellt Einstellungen Variablen---------------------------------------------------------------------------------------------------
einstellungen_datei = open("Einstellungen","r")
einstellungen_string = einstellungen_datei.read()
exec einstellungen_string
#vordergrund_farbe = [100,0,255]
#hintergrund_farbe = [0,0,0]
#schriftgroesse = 20
nick = raw_input("Nick: ")
#-----------------------------------Erstellt Server Variablen----------------------------------------------------------------------------------------------------------
#server = "rstestdomain.rs.funpic.de"
#benutzer = "ftp1778310"
#passwort = "anonym555"
#server_pfad = "/"
#server_datei = "chat_datei"
#-----------------------------------Erstellt Pygame Definitionen-------------------------------------------------------------------------------------------------------
def set_bildschirm():
screen.fill(hintergrund_farbe)
chat_rect = pygame.Rect(10,20,230,250)
eingabe_rect = pygame.Rect(10,290,230,100)
pygame.draw.rect(screen,vordergrund_farbe,chat_rect,1)
pygame.draw.rect(screen,vordergrund_farbe,eingabe_rect,1)
pygame.display.flip()
def set_schrift():
eingabe_liste_vollstandig = eingabetext.split('\n')
eingabe_liste = eingabe_liste_vollstandig[-28:]
zeilen_index = 0
for i in eingabe_liste:
eingabe_pytext = font.render(i,1,schrift_farbe)
zahl = zeilen_index*13+292
zeilen_index += 1
screen.blit(eingabe_pytext,(12,zahl))
pygame.display.flip()
nachrichten_liste_vollstandig = nachrichten_text.split('\n')
nachrichten_liste = nachrichten_liste_vollstandig[-20:]
zeilen_index = 0
for i in nachrichten_liste:
nachricht_pytext = font.render(i,1,schrift_farbe)
zahl = zeilen_index*13+22
zeilen_index += 1
screen.blit(nachricht_pytext,(12,zahl))
pygame.display.flip()
#-----------------------------------Erstellt Variablen-----------------------------------------------------------------------------------------------------------------
eingabetext = "[%s] "% nick
nickzahl = 0
for i in eingabetext:
nickzahl += 1
shift = 0
buchstabenzahl = 0 + nickzahl
zeilenzahl = 0
nachrichten_text = ""
#-----------------------------------Erstellt Pygamefenster und bereitet es vor-----------------------------------------------------------------------------------------
pygame.init()
screen = pygame.display.set_mode([250,420])
font = pygame.font.Font(None, schriftgroesse)
set_bildschirm()
set_schrift()
#-----------------------------------Beginn der While-Schleife----------------------------------------------------------------------------------------------------------
chat = Chat()
import time
print "Bereit..."
thread.start_new_thread(chat.chat_download,(server,benutzer,passwort,server_pfad,server_datei))
time.sleep(3)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT:
if shift == 1:
shift = 0
elif shift == 0:
shift = 1
if event.key == 301: #Feststelltaste
shift = 2
eingabe = event2zeichen(event,shift)
if eingabe == "ENTFERNE_LETZTES_ELEMENT!":
if buchstabenzahl == nickzahl:
continue
eingabetext=eingabetext[:-1]
if buchstabenzahl > 0:
buchstabenzahl -= 1
elif buchstabe == 0:
#zeilenzahl -= 1
buchstabenzahl = 27
elif eingabe == "ENTER!":
if eingabetext == "[%s] ./leeren"% nick:
eingabetext = "[%s] "% nick
buchstabenzahl = 0 + nickzahl
chat.chat_leeren(server,benutzer,passwort,server_pfad,server_datei)
elif eingabetext != "["+nick+"] "+"/leeren":
chat.chat_upload(server,benutzer,passwort,server_pfad,server_datei,eingabetext)
eingabetext = "["+nick+"] "
buchstabenzahl = 0 + nickzahl
elif eingabe != "ENTFERNE_LETZTES_ELEMENT!" and eingabe != "" and eingabe != "ENTER!":
eingabetext += eingabe
buchstabenzahl += 1
buchstabe = ""
index = 0
if buchstabenzahl == 28:
try:
while buchstabe != ' ':
index -= 1
buchstabe = eingabetext[index]
buchstabe[index] = "\n"
buchstabenzahl = 0
except:
eingabetext += "\n"
zeile = 0
buchstabenzahl = 0
if event.key != pygame.K_LSHIFT and event.key != pygame.K_RSHIFT and shift == 1:
shift = 0
set_bildschirm()
set_schrift()
if event.type == pygame.KEYUP:
if event.key == 301: #Feststelltaste
shift = 0
dann ein benötigtes Modul, welches ihr pygame_eingabe.py nennen müsst:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import pygame
def event2zeichen(event,shift):
eingabetext=""
if shift == 2:
shift = 1
if event.type == pygame.KEYDOWN:
##################################################################################################
#------------------------------Buchstaben & Space------------------------------------------------#
##################################################################################################
if event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT:
if shift == 1:
shift = 0
elif shift == 0:
shift=1
if event.key == pygame.K_a:
if shift == 1:
eingabetext += "A"
shift = 0
elif shift == 0:
eingabetext += "a"
if event.key == pygame.K_b:
if shift == 1:
eingabetext += "B"
shift = 0
elif shift == 0:
eingabetext += "b"
if event.key == pygame.K_c:
if shift == 1:
eingabetext += "C"
shift = 0
elif shift == 0:
eingabetext += "c"
if event.key == pygame.K_d:
if shift == 1:
eingabetext += "D"
shift = 0
elif shift == 0:
eingabetext += "d"
if event.key == pygame.K_e:
if shift == 1:
eingabetext += "E"
shift = 0
elif shift == 0:
eingabetext += "e"
if event.key == pygame.K_f:
if shift == 1:
eingabetext += "F"
shift = 0
elif shift == 0:
eingabetext += "f"
if event.key == pygame.K_g:
if shift == 1:
eingabetext += "G"
shift = 0
elif shift == 0:
eingabetext += "g"
if event.key == pygame.K_h:
if shift == 1:
eingabetext += "H"
shift = 0
elif shift == 0:
eingabetext += "h"
if event.key == pygame.K_i:
if shift == 1:
eingabetext += "I"
shift = 0
elif shift == 0:
eingabetext += "i"
if event.key == pygame.K_j:
if shift == 1:
eingabetext += "J"
shift = 0
elif shift == 0:
eingabetext += "j"
if event.key == pygame.K_k:
if shift == 1:
eingabetext += "K"
shift = 0
elif shift == 0:
eingabetext += "k"
if event.key == pygame.K_l:
if shift == 1:
eingabetext += "L"
shift = 0
elif shift == 0:
eingabetext += "l"
if event.key == pygame.K_m:
if shift == 1:
eingabetext += "M"
shift = 0
elif shift == 0:
eingabetext += "m"
if event.key == pygame.K_n:
if shift == 1:
eingabetext += "N"
shift = 0
elif shift == 0:
eingabetext += "n"
if event.key == pygame.K_o:
if shift == 1:
eingabetext += "O"
shift = 0
elif shift == 0:
eingabetext += "o"
if event.key == pygame.K_p:
if shift == 1:
eingabetext += "P"
shift = 0
elif shift == 0:
eingabetext += "p"
if event.key == pygame.K_q:
if shift == 1:
eingabetext += "Q"
shift = 0
elif shift == 0:
eingabetext += "q"
if event.key == pygame.K_r:
if shift == 1:
eingabetext += "R"
shift = 0
elif shift == 0:
eingabetext += "r"
if event.key == pygame.K_s:
if shift == 1:
eingabetext += "S"
shift = 0
elif shift == 0:
eingabetext += "s"
if event.key == pygame.K_t:
if shift == 1:
eingabetext += "T"
shift = 0
elif shift == 0:
eingabetext += "t"
if event.key == pygame.K_u:
if shift == 1:
eingabetext += "U"
shift = 0
elif shift == 0:
eingabetext += "u"
if event.key == pygame.K_v:
if shift == 1:
eingabetext += "V"
shift = 0
elif shift == 0:
eingabetext += "v"
if event.key == pygame.K_w:
if shift == 1:
eingabetext += "W"
shift = 0
elif shift == 0:
eingabetext += "w"
if event.key == pygame.K_x:
if shift == 1:
eingabetext += "X"
shift = 0
elif shift == 0:
eingabetext += "x"
if event.key == pygame.K_y:
if shift == 1:
eingabetext += "Y"
shift = 0
elif shift == 0:
eingabetext += "y"
if event.key == pygame.K_z:
if shift == 1:
eingabetext += "Z"
shift = 0
elif shift == 0:
eingabetext += "z"
if event.key == pygame.K_SPACE:
if shift == 1:
eingabetext += " "
shift = 0
elif shift == 0:
eingabetext += " "
if event.key == pygame.K_BACKSPACE:
if shift == 1:
eingabetext += "ENTFERNE_LETZTES_ELEMENT!"
shift = 0
elif shift == 0:
eingabetext += "ENTFERNE_LETZTES_ELEMENT!"
if event.key == pygame.K_RETURN:
if shift == 1:
eingabetext += "ENTER!"
shift = 0
elif shift == 0:
eingabetext += "ENTER!"
##################################################################################################
#-----------------------Zahlen und Sonderzeichen-------------------------------------------------#
##################################################################################################
if event.key == pygame.K_1:
if shift == 1:
eingabetext += "!"
shift = 0
elif shift == 0:
eingabetext += "1"
if event.key == pygame.K_2:
if shift == 1:
eingabetext += '"'
shift = 0
elif shift == 0:
eingabetext += '2'
if event.key == pygame.K_3:
if shift == 1:
eingabetext += "§"
shift = 0
elif shift == 0:
eingabetext += "3"
if event.key == pygame.K_4:
if shift == 1:
eingabetext += "$"
shift = 0
elif shift == 0:
eingabetext += "4"
if event.key == pygame.K_5:
if shift == 1:
eingabetext += "%"
shift = 0
elif shift == 0:
eingabetext += "5"
if event.key == pygame.K_6:
if shift == 1:
eingabetext += "&"
shift = 0
elif shift == 0:
eingabetext += "6"
if event.key == pygame.K_7:
if shift == 1:
eingabetext += "/"
shift = 0
elif shift == 0:
eingabetext += "7"
if event.key == pygame.K_8:
if shift == 1:
eingabetext += "("
shift = 0
elif shift == 0:
eingabetext += "8"
if event.key == pygame.K_9:
if shift == 1:
eingabetext += ")"
shift = 0
elif shift == 0:
eingabetext += "9"
if event.key == pygame.K_0:
if shift == 1:
eingabetext += "="
shift = 0
elif shift == 0:
eingabetext += "0"
if event.key == 46:
if shift == 1:
eingabetext += ":"
shift = 0
elif shift == 0:
eingabetext += "."
if event.key == 257:
if shift == 1:
eingabetext += "1"
shift = 0
elif shift == 0:
eingabetext += "1"
if event.key == 258:
if shift == 1:
eingabetext += "2"
shift = 0
elif shift == 0:
eingabetext += "2"
if event.key == 259:
if shift == 1:
eingabetext += "3"
shift = 0
elif shift == 0:
eingabetext += "3"
if event.key == 260:
if shift == 1:
eingabetext += "4"
shift = 0
elif shift == 0:
eingabetext += "4"
if event.key == 261:
if shift == 1:
eingabetext += "5"
shift = 0
elif shift == 0:
eingabetext += "5"
if event.key == 262:
if shift == 1:
eingabetext += "6"
shift = 0
elif shift == 0:
eingabetext += "6"
if event.key == 263:
if shift == 1:
eingabetext += "7"
shift = 0
elif shift == 0:
eingabetext += "7"
if event.key == 264:
if shift == 1:
eingabetext += "8"
shift = 0
elif shift == 0:
eingabetext += "8"
if event.key == 265:
if shift == 1:
eingabetext += "9"
shift = 0
elif shift == 0:
eingabetext += "9"
if event.key == 256:
if shift == 1:
eingabetext += "0"
shift = 0
elif shift == 0:
eingabetext += "0"
if event.key == 45:
if shift == 1:
eingabetext += "_"
shift = 0
elif shift == 0:
eingabetext += "-"
if event.key == 35:
if shift == 1:
eingabetext += "'"
shift = 0
elif shift == 0:
eingabetext += "#"
if event.key == 43:
if shift == 1:
eingabetext += "*"
shift = 0
elif shift == 0:
eingabetext += "+"
return eingabetext
und noch eine Einstellungen datei die ihr Einstellungen nennen müsst:
Code: Alles auswählen
vordergrund_farbe = [255,255,255]
schrift_farbe = [255,0,0]
hintergrund_farbe = [0,0,0]
schriftgroesse = 20
server = "rstestdomain.rs.funpic.de"
benutzer = "ftp1778310"
passwort = "anonym555"
server_pfad = "/"
server_datei = "chat_datei"
ihr könnt ihn natürlich auch ändern wenn ihr einen eigenen habt
ok schonmal danke für eure Verbesserungsvorschläge und gefundene Fehler!!!