Действительно ли Python и pygame являются хорошим способом изучить SDL? [закрытый]

Насколько я знаю, это невозможно напрямую ни в Spark, ни в Hive. Оба требуют, чтобы предложение ORDER BY, используемое с RANGE, было числовым. Самое близкое, что я нашел, это преобразование в временную метку и работу в секундах. Предполагая, что столбец start содержит date тип:

from pyspark.sql import Row

row = Row("id", "start", "some_value")
df = sc.parallelize([
    row(1, "2015-01-01", 20.0),
    row(1, "2015-01-06", 10.0),
    row(1, "2015-01-07", 25.0),
    row(1, "2015-01-12", 30.0),
    row(2, "2015-01-01", 5.0),
    row(2, "2015-01-03", 30.0),
    row(2, "2015-02-01", 20.0)
]).toDF().withColumn("start", col("start").cast("date"))

Маленькое определение помощника и окна:

from pyspark.sql.window import Window
from pyspark.sql.functions import mean, col


# Hive timestamp is interpreted as UNIX timestamp in seconds*
days = lambda i: i * 86400 

Наконец запрос:

w = (Window()
   .partitionBy(col("id"))
   .orderBy(col("start").cast("timestamp").cast("long"))
   .rangeBetween(-days(7), 0))

df.select(col("*"), mean("some_value").over(w).alias("mean")).show()

## +---+----------+----------+------------------+
## | id|     start|some_value|              mean|
## +---+----------+----------+------------------+
## |  1|2015-01-01|      20.0|              20.0|
## |  1|2015-01-06|      10.0|              15.0|
## |  1|2015-01-07|      25.0|18.333333333333332|
## |  1|2015-01-12|      30.0|21.666666666666668|
## |  2|2015-01-01|       5.0|               5.0|
## |  2|2015-01-03|      30.0|              17.5|
## |  2|2015-02-01|      20.0|              20.0|
## +---+----------+----------+------------------+

Далеко не красиво, но работает.


* Руководство по языку улья, Типы

19
задан MrValdez 27 October 2008 в 10:08
поделиться

8 ответов

pygame абстрагирует интерфейс SDL довольно много, поэтому я не думаю, что существует большая часть перенесенного преимущества.

6
ответ дан 30 November 2019 в 03:25
поделиться

Python+PyGame является действительно прекрасной идеей для изучения SDL.

я записал несколько популярная игра тот путь . Python/PyGame кажется намного более усовершенствованным, чем привязка SDL к любому другому языку, и одно огромное преимущество по сравнению с C++, это не должно компилировать код, и с некоторым простым взламыванием может даже изменить под управлением программу и видеть, что обратная связь живет. Это имеет огромное огромное значение - как использование программы векторной графики GUI по сравнению с записью SVG в текстовом редакторе. К сожалению, Вы не вытаскиваете это из поля, потому что необходимо адаптировать программу немного для наблюдения его.

Что касается других преимуществ PyGame, jrpg работал с очень небольшими изменениями на Linux, Windows и OSX. Я должен был сделать некоторые тонкие настройки к полноэкранному переключению мод и двойной буферизации, поскольку были некоторые различия между Ose, но никакая перекомпиляция никогда не была необходима. Если у Вас есть какие-либо проблемы, можно получить хорошее отслеживание стека и отладить живые проблемы, это не действительно возможно с C++, после того как Вы получаете повреждение памяти или segfault.

я действительно не знаю, как легкий или как трудно был бы он для смешивания C++ и Python для игр SDL. Я думаю, что это не может быть слишком твердо, поскольку PyGame является довольно простой, но очень приятно сделанной оберткой для SDL, и Python/C++, смешивающийся, как предполагается, достаточно легок.

15
ответ дан 30 November 2019 в 03:25
поделиться

Можно изучить некоторые методы, способы реализовать игровую логику и т.д. в основанной на SDL среде, но после перемещения в C++/SDL Вы должен будет использовать функции SDL непосредственно, функции/объекты помощника от pyGame будут абсолютно бесполезны.

6
ответ дан 30 November 2019 в 03:25
поделиться

Да . Если Python является намного более естественным для Вас, чем C++, это могла бы быть хорошая идея изучить pygame сначала. Необходимо будет пройти процесс перевода при миграции на использование SDL и C, но это должно быть более или менее непосредственное отображение.

5
ответ дан 30 November 2019 в 03:25
поделиться

Конечно. Можно записать sdl игру или инструменты в действительно меньше времени.

можно запустить с этого кода, которые отображают data/chimp.bmp в 468x60 экран:

import pygame, sys,os
from pygame.locals import * 

pygame.init() 

window = pygame.display.set_mode((468, 60)) 
pygame.display.set_caption('Monkey Fever') 
screen = pygame.display.get_surface() 

monkey_head_file_name = os.path.join("data","chimp.bmp")

monkey_surface = pygame.image.load(monkey_head_file_name)

screen.blit(monkey_surface, (0,0)) 
pygame.display.flip() 

def input(events): 
   for event in events: 
      if event.type == QUIT: 
         sys.exit(0) 
      else: 
         print event 

while True: 
   input(pygame.event.get())

то, Когда Вы знакомы с SDL, возражает, что можно легко переместиться в C++ (если Вы хотите снова :p Pygame быстр, и можно сделать complexe игру с ним).

3
ответ дан 30 November 2019 в 03:25
поделиться

Вы могли попробовать поросенок , Если Вы нацелены в OpenGL. Это намного лучше продумано библиотека, чем, каков pygame.

, Но затем, если Вы хотите переместиться в C++ и SDL в будущем, сделайте это теперь. Тем путем Вы на самом деле изучаете SDL. Но прежде, чем сделать такую безответственную вещь, это была бы, возможно, хорошая идея зарегистрироваться поросенок сначала. Просто, потому что для разработки Ваших приложений правильно в C++ также, неважно, как плохо Ваши библиотеки.

1
ответ дан 30 November 2019 в 03:25
поделиться

Python не предотвратит Вас от изучения дизайн , и это - в значительной степени более важная вещь изучить IMO, я делаю клон братьев удара с pygame, и я изучил много в дизайне. И все же Вы будете учиться не писать слишком много субоптимального кода также, Python имеют умные и красивые взломы также.

1
ответ дан 30 November 2019 в 03:25
поделиться

Я не считал бы Python (или никакой управляемый или интерпретируемый язык, в этом отношении) хорошим способом изучить любую сложную задачу, потому что это изолирует программиста от работ системы слишком много. Как мой друг выразился, "Python любит Вас и хочет, чтобы Вы были счастливы". И это - все хорошо и хороший, если Вы уже знаете основные принципы, но если Вы хотите к , учатся , последней вещью, которую Вы хотите, является язык, который делает всю работу для Вас.

Вы изучите, что очень быстро, но не, почему, и затем когда что-то идет плохо неправильно, (и это будет в конечном счете в любом нетривиальном проекте) Вас оставят без идеи, что происходит или почему.

0
ответ дан 30 November 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: