Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2017 19:15:49

GoldLion
От: Казахстан
Зарегистрирован: 2017-02-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyGame не отображает русский язык.

Создаю меню игры. но столкнулся с проблемой. Место русских букв “кракозябры”
вод собственно код. Надеюсь на вашу помощь.

 #!/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()



———————————————
Windows XP
Celeron(R) CPU 2.5GHz 1.00 GB ОЗУ
———————————————

Офлайн

#2 Фев. 14, 2017 08:15:53

aiscy
Зарегистрирован: 2015-06-17
Сообщения: 52
Репутация: +  9  -
Профиль   Отправить e-mail  

PyGame не отображает русский язык.

 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)

Офлайн

#3 Фев. 14, 2017 11:29:40

GoldLion
От: Казахстан
Зарегистрирован: 2017-02-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyGame не отображает русский язык.

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



———————————————
Windows XP
Celeron(R) CPU 2.5GHz 1.00 GB ОЗУ
———————————————

Офлайн

#4 Фев. 14, 2017 12:04:49

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

PyGame не отображает русский язык.

вам сам файл с кодом программы нужно закодировать в utf-8 . В общем миллиард раз писали, на миллионе сайтов о том как надо работать с кодировками питона.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Фев. 14, 2017 13:02:20

GoldLion
От: Казахстан
Зарегистрирован: 2017-02-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyGame не отображает русский язык.

JOHN_16
вам сам файл с кодом программы нужно закодировать в utf-8 . В общем миллиард раз писали, на миллионе сайтов о том как надо работать с кодировками питона.

Блин забыл просто))) и спасибо вам.
извините за лишний пост)



———————————————
Windows XP
Celeron(R) CPU 2.5GHz 1.00 GB ОЗУ
———————————————

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version