Форум сайта python.su
Создаю меню игры. но столкнулся с проблемой. Место русских букв “кракозябры”
вод собственно код. Надеюсь на вашу помощь.
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os import pygame from pygame.locals import * pygame.init() pygame.font.init() bgcolor = (51, 51, 51) font_color = (255, 255, 153) font_color2 = (255, 255, 0) highlite_color = (153, 102, 255) font = pygame.font.SysFont('arial.ttf', 72) surface_width = 800 surface_height = 600 clock = pygame.time.Clock() #surface_menu = pygame.display.set_mode([surface_width,surface_height]) #surface_menu=pygame.display.set_mode((800,600),pygame.FULLSCREEN) surface_menu=pygame.display.set_mode((800,600)) pygame.display.set_caption("Test") surface_menu.fill(bgcolor) all_s = []# список всех объектов class Sprite: def __init__(self,text, font, x, y): self.x = x self.y = y self.text = text self.font = font.render(self.text,1,font_color) self.rect = self.font.get_rect() all_s.append(self) self.w = self.font.get_width() self.h = self.font.get_height() #self.rect.topleft = (self.x,self.y) #surface_menu.blit(self.font,self.rect) def bum (self):# проверка попадания мышки на объект if self.x<mp[0]<self.x+self.w and self.y<mp[1]<self.y+self.h: a = mp[0]-self.x# разница кооздинаты мышки и объекта b = mp[1]-self.y self.font = font.render(self.text,1,font_color2) else: self.font = font.render(self.text,1,font_color) def render (self):# отображение обьекта на игровом поле(экране) self.rect.topleft = (self.x,self.y) surface_menu.blit(self.font,self.rect) Sprite('Старт', font, (surface_width/2)-65, (surface_height/2)-90) Sprite('Настройки', font, (surface_width/2)-65, (surface_height/2)-40) Sprite('Выход', font, (surface_width/2)-50, (surface_height/2)+10) while True: for e in pygame.event.get():# для любого события if e.type == pygame.QUIT:# если было закрытие окна sys.exit() # захват объекта лкм и перемещение при удержании кнопки if e.type == pygame.MOUSEMOTION: mp = pygame.mouse.get_pos() for i in all_s: i.bum() #if e.type == pygame.MOUSEBUTTONDOWN and e.button ==1: #mp = pygame.mouse.get_pos() #for i in all_s :# захват объекта #i.bum() clock.tick(60) for i in all_s:# отображаем все объекты i.render() #pygame.display.update() pygame.display.flip()# отображаем полностью дисплей(окно) pygame.quit()
Офлайн
Sprite(u'Старт', font, (surface_width / 2) - 65, (surface_height / 2) - 90) Sprite(u'Настройки', font, (surface_width / 2) - 65, (surface_height / 2) - 40) Sprite(u'Выход', font, (surface_width / 2) - 50, (surface_height / 2) + 10)
Отредактировано aiscy (Фев. 14, 2017 08:16:12)
Офлайн
aiscy
пробовал уже так ошибку выдаёт
Sprite(u'╤ЄрЁЄ',1, font, (surface_width/2)-65, (surface_height/2)-90)
SyntaxError: (unicode error) ‘utf8’ codec can't decode byte 0xd1 in position 0: invalid continuation byte
Офлайн
вам сам файл с кодом программы нужно закодировать в utf-8 . В общем миллиард раз писали, на миллионе сайтов о том как надо работать с кодировками питона.
Офлайн
JOHN_16
вам сам файл с кодом программы нужно закодировать в utf-8 . В общем миллиард раз писали, на миллионе сайтов о том как надо работать с кодировками питона.
Офлайн