본문 바로가기

Python

파이썬 게임 서버개발 - 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#-*-coding:utf-8-*-
from socket import *
import sys
from os import system
 
if(len(sys.argv) < 2): 
    print "ARGV Error!"
    print "Usage : %s [PORT]" % sys.argv[0]
    exit()
 
# socket define
HOST = ''
PORT = int(sys.argv[1])
ADDR = (HOST,PORT)
 
 
 
 
class person:
    def __init__(self,x,y):
        self.x = x
        self.y = y
 
    def add_user(self,ip):
        self.ip = ip
 
def draw_map(user):
    mapping = {
        0:"A",
        1:"B",
        2:"C",
        3:"D",
        4:"E",
        5:"F",
        6:"-"
    }
    system("clear")
    for i in range(0,10):
        for j in range(0,10):
            sys.stdout.write(mapping.get(check_user(user,j,i)))
            sys.stdout.write(" ")
            continue
 
        print ""
 
def check_user(user,x,y):
    for i in range(0,6):
        if(user[i].x == x and user[i].y == y):
            return i
 
    return 6
 
def make_user():
    user = [0]*6
 
    for i in range(0,6):
        user[i] = person(0,0)
 
    return user
 
def where_user(user):
    for i in range(0,6):
        print "x=" + str(user[i].x) + " y=" + str(user[i].y)
 
def set_locate(user):
    for i in range(0,3):
        user[i].y=i
        user[i+3].y=i
 
    for i in range(3,6):
        user[i].x=9
 
    return user
 
 
def move_user(user):
    user[0].x = 5
    return user
 
def make_socket(port): #edit here
    s=socket(AF_INET,SOCK_STREAM)
    s.bind(("localhost",port))
    s.listen(1)
    connect,address = s.accept()
    
 
 
if __name__ == '__main__':
 
 
# make user object
    user=make_user()
 
# set user x,y
    user=set_locate(user)
 
# print user's x,y
    where_user(user)
 
# print map
    draw_map(user)
 
# make socket
    s=make_socket()
 
# move user locate
    user = move_user(user)
 
# print map
    draw_map(user)
 
 
 
"""
    소켓으로 입력대기를 받음 
    HELLO 가 날아오면 무작위 포트로 소켓을 만들고
    그 포트번호로 클라이언트를 다시 연결하게끔 해야 할듯. (다른 유저가 무단으로 조작하지 못하게)
    
    유저 입력 후 캐릭터 이동은 쓰레드를 사용해서 처리.
    동시에 이동하면 오류가 일어날지도 모르니 좌표 수정때는 플래그 변수를 하나 둬서 동시 수정을 막음.
"""
cs



기존에 C언어로 처리하던 서버를 파이썬으로 개발해 보았다.

확실히 생산성이 좋아서 인지 진도가 빠름.


하지만 아직 객체 처리에는 미숙한 면이 있어 많이 해봐야 할 듯 


'Python' 카테고리의 다른 글

scapy 이용 arp 패킷 보내기.  (0) 2015.05.01
네이버 실시간 검색어 파싱  (0) 2015.04.28
쓰레드를 이용한 소켓  (0) 2015.04.27
scapy - 패킷 제작  (0) 2015.04.27
파이썬 포트 스캐너  (0) 2015.04.26