Exemplo n.º 1
0
class Control(object):
    def __init__(self):
        self.screen = pg.display.set_mode((500, 500))
        self.screen_rect = self.screen.get_rect()
        self.clock = pg.time.Clock()
        self.done = False
        self.fps = 60.0
        self.color = WHITE
        message = "Change the screen color."
        self.button = Button((0, 0, 200, 50),
                             RED,
                             self.change_color,
                             text=message,
                             **BUTTON_STYLE)
        self.button.rect.center = (self.screen_rect.centerx, 100)

    def change_color(self):
        self.color = [random.randint(0, 255) for _ in range(3)]

    def event_loop(self):
        for event in pg.event.get():
            if event.type == pg.QUIT:
                self.done = True
            self.button.check_event(event)

    def main_loop(self):
        while not self.done:
            self.event_loop()
            self.screen.fill(self.color)
            self.button.update(self.screen)
            pg.display.update()
            self.clock.tick(self.fps)
Exemplo n.º 2
0
def redraw_home(win: pygame.Surface, code: str, color: tuple, input_rect: pygame.Rect, go: Button, lobby: Button):
	win.fill(WHITE)

	pygame.draw.rect(win, color, input_rect)
	code_surface = font.render(code, True, BLACK)
	win.blit(code_surface, (input_rect.x + 5, input_rect.y + 5))

	go.update(win)
	lobby.update(win)
	input_rect.w = max(150, code_surface.get_width() + 10)
Exemplo n.º 3
0
 def __init__(self):
     self.screen = pg.display.set_mode((500, 500))
     self.screen_rect = self.screen.get_rect()
     self.clock = pg.time.Clock()
     self.done = False
     self.fps = 60.0
     self.color = WHITE
     message = "Change the screen color."
     self.button = Button((0, 0, 200, 50),
                          RED,
                          self.change_color,
                          text=message,
                          **BUTTON_STYLE)
     self.button.rect.center = (self.screen_rect.centerx, 100)
Exemplo n.º 4
0
def setup():
    global screen, game, clock, buttons, game_surface, board_image
    pygame.init()
    pygame.mixer.init()
    clock = pygame.time.Clock()

    S_WIDTH = GetSystemMetrics(0)
    S_HEIGHT = GetSystemMetrics(1)
    screen = pygame.display.set_mode(
        (int(S_WIDTH * 0.5), int(S_HEIGHT * 0.75)))
    pygame.display.set_caption("michess")
    pygame.display.set_icon(ICON)

    game = Game()
    buttons = [
        Button((20, 30, 200, 50),
               LIGHT_GREY,
               new_game,
               text="New Game",
               **BUTTON_STYLE)
    ]
    buttons.append(
        Button((20, 100, 200, 50),
               LIGHT_GREY,
               undo,
               text="Undo",
               **BUTTON_STYLE))
    buttons.append(
        Button((20, 170, 200, 50),
               LIGHT_GREY,
               game.random_move,
               text="Random Move",
               **BUTTON_STYLE))

    game_surface = pygame.Surface((512, 512))
    board_image = pygame.image.load(join("assets", "board.png"))
Exemplo n.º 5
0
 def __init__(self):
     # инициализация окна
     pygame.init()
     # задание название окна
     pygame.display.set_caption('игра жизнь')
     # задание размеров окна
     self.screen = pygame.display.set_mode((500, 700))
     # буфер в котором определяется жива клетка или нет (0 мертва, 1 жива)
     self.data = [[0 for j in range(50)] for i in range(50)]
     # переменная отвечающая за запуск программы
     self.run = True
     # переменная времени
     self.clock = pygame.time.Clock()
     # запуск игры
     self.start = False
     # переменная инициализации
     self.initial = True
     self.startButton = Button((0, 0, 100, 100),
                               GREEN,
                               self.set_start,
                               text='Старт',
                               **BUTTON_STYLE)
     self.randomButton = Button((0, 0, 100, 100),
                                RED,
                                self.set_random,
                                text='Рандом',
                                **BUTTON_STYLE)
     self.resetButton = Button((0, 0, 100, 100),
                               BLUE,
                               self.set_clear,
                               text='Очистка',
                               **BUTTON_STYLE)
     self.screen_rect = self.screen.get_rect()
     self.startButton.rect.center = (self.screen_rect.centerx + 100, 600)
     self.randomButton.rect.center = (self.screen_rect.centerx, 600)
     self.resetButton.rect.center = (self.screen_rect.centerx - 100, 600)
Exemplo n.º 6
0
def main():
    pygame.init()  # prepare the pygame module for use

    # Create a new surface and window.
    surface_size = 1024
    main_surface = pygame.display.set_mode((surface_size, surface_size))
    my_clock = pygame.time.Clock()

    # set up the buttons
    quit_btn = Button((0, 0, 200, 50), RED, end, text='Quit', **BUTTON_STYLE)
    pause_btn = Button((200, 0, 200, 50),
                       RED,
                       pause,
                       text='Play/Pause',
                       **BUTTON_STYLE)

    while True:
        theta = 0
        while not done:

            # Handle evente from keyboard, mouse, etc.
            # Handle evente from keyboard, mouse, etc.
            ev = pygame.event.poll()
            if ev.type == pygame.QUIT:
                #break;
                pygame.quit()
                quit()

            quit_btn.check_event(ev)
            pause_btn.check_event(ev)

            if state == RUNNING:
                '''Draw the tree'''
                # Updates - change the angle
                theta += 0.01

                # Draw everything
                main_surface.fill((255, 255, 0))
                draw_tree(9, theta, surface_size * 0.9,
                          (surface_size // 2, surface_size - 50), -math.pi / 2)

            elif state == PAUSE:
                """Draw the pause screen"""
                # put text to screen
                pygame.font.init()
                bigfont = pygame.font.SysFont('Comic Sans MS', 90)
                textsurface = bigfont.render('Paused', False, (0, 0, 0))

                # center the text on the screen
                main_surface.blit(
                    textsurface,
                    ((surface_size // 2) - textsurface.get_width() // 2,
                     surface_size // 2))

                littlefont = pygame.font.SysFont('Comic Sans MS', 25)
                textsurface = littlefont.render(
                    'Press Quit to Quit, Press Play/Pause to Continue.', False,
                    (0, 0, 0))

                # center the text on the screen
                main_surface.blit(
                    textsurface,
                    ((surface_size // 2) - textsurface.get_width() // 2,
                     (surface_size // 2) + textsurface.get_height() * 4))

            quit_btn.update(main_surface)  # add the quit button to the surface
            pause_btn.update(
                main_surface)  # add the pause button to the surface
            pygame.display.flip()  # show the surface
            my_clock.tick(120)
            continue

        pygame.quit()
        quit()
Exemplo n.º 7
0
class gameoflife(object):
    def __init__(self):
        # инициализация окна
        pygame.init()
        # задание название окна
        pygame.display.set_caption('игра жизнь')
        # задание размеров окна
        self.screen = pygame.display.set_mode((500, 700))
        # буфер в котором определяется жива клетка или нет (0 мертва, 1 жива)
        self.data = [[0 for j in range(50)] for i in range(50)]
        # переменная отвечающая за запуск программы
        self.run = True
        # переменная времени
        self.clock = pygame.time.Clock()
        # запуск игры
        self.start = False
        # переменная инициализации
        self.initial = True
        self.startButton = Button((0, 0, 100, 100),
                                  GREEN,
                                  self.set_start,
                                  text='Старт',
                                  **BUTTON_STYLE)
        self.randomButton = Button((0, 0, 100, 100),
                                   RED,
                                   self.set_random,
                                   text='Рандом',
                                   **BUTTON_STYLE)
        self.resetButton = Button((0, 0, 100, 100),
                                  BLUE,
                                  self.set_clear,
                                  text='Очистка',
                                  **BUTTON_STYLE)
        self.screen_rect = self.screen.get_rect()
        self.startButton.rect.center = (self.screen_rect.centerx + 100, 600)
        self.randomButton.rect.center = (self.screen_rect.centerx, 600)
        self.resetButton.rect.center = (self.screen_rect.centerx - 100, 600)

    def getData(self):
        return self.data

    def set_random(self):
        for i in range(len(self.data)):
            for j in range(len(self.data[i])):
                self.data[i][j] = random.randint(0, 1)

    def set_start(self):
        # если запуск уже произведен, т.е. значение self.start = true, то меняем значение на false, иначе true
        if self.start:
            self.start = False
            self.initial = True
        else:
            self.start = True
            self.initial = False

    def set_clear(self):
        # передаем новый массив с нулям
        self.data = [[0 for j in range(50)] for i in range(50)]
        # выводим в консоль для отслеживания действий
        print("очистка поля")
        # указываем что игра заверщена в этот момент
        self.start = False
        # указываем что пользователь может расставлять клетки, эта переменная активирует действия в функции сверху
        self.initial = True

        # функция поиска соседей
    def get_neighbour(self, i, j):
        neighbour = [[i + 1, j], [i - 1, j], [i, j + 1], [i, j - 1],
                     [i + 1, j + 1], [i - 1, j + 1], [i + 1, j - 1],
                     [i - 1, j - 1]]
        neighbour = [i for i in neighbour if 0 <= i[0] < 50 and 0 <= i[1] < 50]
        return neighbour

    # функция новой эволюции клетки
    def next_generation(self):
        # возвращаем прошлую версию массива
        self.last_generation = copy.deepcopy(self.data)
        # проходимся по массиву
        for i in range(len(self.data)):
            for j in range(len(self.data[i])):
                # ищем количество соседних клеток
                self.count = [
                    self.last_generation[k[0]][k[1]]
                    for k in self.get_neighbour(i, j)
                ].count(1)
                # в зависимости от количества соседних, оживляем
                if self.last_generation[i][j] == 1:
                    self.data[i][j] = 1 if self.count in range(2, 4) else 0
                elif self.last_generation[i][j] == 0:
                    self.data[i][j] = 1 if self.count == 3 else 0

    # обновление окна
    def update(self):
        # закрашивание окна черным
        self.screen.fill((0, 0, 0))
        # установка кнопок
        # вывод клеток
        for i in range(len(self.data)):
            for j in range(len(self.data[i])):
                if self.data[i][j] == 1:
                    pygame.draw.rect(self.screen, ORANGE,
                                     (j * 10, i * 10, 10, 10))
        self.resetButton.update(self.screen)
        self.startButton.update(self.screen)
        self.randomButton.update(self.screen)

    # функция действий пользователя - расстановка клеток и удаление
    def user_initial(self):
        if self.initial:
            x, y = pygame.mouse.get_pos()
            # до 500 по Y расположено окно игры
            if y < 500:
                if pygame.mouse.get_pressed()[0]:
                    self.data[math.floor(y / 10)][math.floor(x / 10)] = 1
                if pygame.mouse.get_pressed()[2]:
                    self.data[math.floor(y / 10)][math.floor(x / 10)] = 0
            self.clock.tick(60)

    def event_loop(self):
        for event in pygame.event.get():
            # если окно закрыто, программа завершается
            if event.type == pygame.QUIT:
                self.run = False
            self.randomButton.check_event(event)
            self.resetButton.check_event(event)
            self.startButton.check_event(event)

    # функция запуска
    def start_game(self):
        while self.run:
            # обработка событий окна
            self.event_loop()
            # обновление объектов в окне
            self.update()
            # вызов функции в которой происходит расположение пользователем клеток, в случае initial = True
            self.user_initial()
            # если игра начата
            if self.start:
                # происходит вызов функции в которой происходит новое поколение клеток
                self.next_generation()
                # задержка(иначе будет все слишком быстро)
                self.clock.tick(10)
            # обновление окна
            pygame.display.update()
Exemplo n.º 8
0
def main():
	global p
	global display_invalid
	global menu
	global joined

	run = True

	# if (p is None):
		# raise Exception('Server is not running')

	price = 100

	clock = pygame.time.Clock()



	input_rect = pygame.Rect(150, 400, 150, 25)
	code = ''
	active = False
	display_invalid = False
	joined = False

	new_lobby = Button(
		(150, 360, 175, 25), LIGHT_GREY, lambda: create(), text='Create Private Lobby', **HOME
	)

	go = Button(
		(300, 400, 25, 25), LIGHT_GREY, lambda: join(code), text='GO', **HOME
	)

	while (menu):
		clock.tick(60)

		win.fill(WHITE)

		for event in pygame.event.get():
			keys = pygame.key.get_pressed()

			go.check_event(event)
			new_lobby.check_event(event)

			if (joined):
				break

			if (event.type == pygame.QUIT):
				pygame.quit()

			if event.type == pygame.MOUSEBUTTONDOWN:
				display_invalid = False

				if input_rect.collidepoint(event.pos):
					active = True
				else:
					active = False

			if (active and event.type == pygame.KEYDOWN):
				if (keys[pygame.K_BACKSPACE]):
					if (keys[pygame.K_LCTRL] or keys[pygame.K_RCTRL]):
						code = ''.join(code.split()[:-1]) # OPTIMIZE
					else:
						code = code[:-1] # OPTIMIZE

				else:
					if (len(code) < 8):
						code += event.unicode.upper()

		if (active):
			color = DARK_GREY
		else:
			color = LIGHT_GREY

		redraw_home(win, code, color, input_rect, go, new_lobby)

		if (display_invalid):
			draw_invalid(win, True)
		else:
			draw_invalid(win, False)

		pygame.display.update()

	#####################################################################

	buy = Button(
		(0, 0, 100, 50), LIGHT_GREEN, lambda: n.send(Order(p, 1, code)), text='Buy', **BUY
	)
	sell = Button(
		(150, 0, 100, 50), LIGHT_RED, lambda: n.send(Order(p, -1, code)), text='Sell', **SELL
	)

	try:
		code = joined_code
	except NameError:
		pass

	while (run): # TODO: displaye game code in bottom right
		clock.tick(60)

		p, price = n.send(Order(p, 0, code=code))

		# TODO: alert user that the code is invalid here

		for event in pygame.event.get():
			if (event.type == pygame.QUIT):
				run = False
				pygame.quit()

			buy.check_event(event)
			sell.check_event(event)


		redraw(win, p, price, code)

		buy.update(win)
		sell.update(win)

		pygame.display.update()