我想用Python开发一个非常简单的2D游戏.Pygame是Python中最受欢迎的游戏开发库,但我已经非常熟悉wxPython并且使用起来很舒服.我甚至在其中写了一个俄罗斯方块克隆,它非常流畅.
我想知道,Pygame在图形方面提供了什么(暂时放弃声音)wxPython不能做什么?在Pygame中制作图形比在wxPython中更简单/更快吗?它是否更加跨平台?
看起来我在这里遗漏了一些东西,但我不知道是什么.
我正在使用不同的编译器遇到以下代码的不一致优化行为:
class tester
{
public:
tester(int* arr_, int sz_)
: arr(arr_), sz(sz_)
{}
int doadd()
{
sm = 0;
for (int n = 0; n < 1000; ++n)
{
for (int i = 0; i < sz; ++i)
{
sm += arr[i];
}
}
return sm;
}
protected:
int* arr;
int sz;
int sm;
};
Run Code Online (Sandbox Code Playgroud)
该doadd
函数模拟对成员的一些密集访问(忽略此问题的溢出).与作为函数实现的类似代码相比:
int arradd(int* arr, int sz)
{
int sm = 0;
for (int n = 0; n < 1000; ++n)
{
for (int …
Run Code Online (Sandbox Code Playgroud) Haskell有Functor
,Applicative
和Monad
为函数(具体地,部分应用类型定义的实例(->) a
在标准库),围绕函数组合构建的.
理解这些实例是一个很好的心灵弯曲练习,但我的问题是关于这些实例的实际用法.我很高兴听到人们使用这些实际代码的现实场景.
当你有正则表达式时,词法分析器很容易编写.今天我想用Python编写一个简单的通用分析器,并提出:
import re
import sys
class Token(object):
""" A simple Token structure.
Contains the token type, value and position.
"""
def __init__(self, type, val, pos):
self.type = type
self.val = val
self.pos = pos
def __str__(self):
return '%s(%s) at %s' % (self.type, self.val, self.pos)
class LexerError(Exception):
""" Lexer error exception.
pos:
Position in the input line where the error occurred.
"""
def __init__(self, pos):
self.pos = pos
class Lexer(object):
""" A simple regex-based lexer/tokenizer.
See below for an example of …
Run Code Online (Sandbox Code Playgroud) 我有一个线程将结果写入队列.
在另一个线程(GUI)中,我定期(在IDLE事件中)检查队列中是否有结果,如下所示:
def queue_get_all(q):
items = []
while 1:
try:
items.append(q.get_nowait())
except Empty, e:
break
return items
Run Code Online (Sandbox Code Playgroud)
这是一个很好的方法吗?
编辑:
我问,因为有时等待的线程会卡住几秒而不会取出新的结果.
"卡住"问题原来是因为我在空闲事件处理程序中进行处理,而不是确保通过调用实际生成这样的事件wx.WakeUpIdle
,如建议的那样.
虽然LOC(#行代码)是对代码复杂性的有问题的衡量,但它是最受欢迎的,并且在非常仔细地使用时,可以提供对代码库的至少相对复杂性的粗略估计(即,如果一个程序是10KLOC)另一个是100KLOC,用相同的语言编写,由大致相同能力的团队编写,第二个程序几乎肯定要复杂得多).
在计算代码行时,您是否更愿意计算注释?测试怎么样?
我见过各种方法.像cloc和sloccount这样的工具允许包含或排除注释.其他人认为评论是代码的一部分及其复杂性.
单元测试存在同样的困境,有时可以达到测试代码本身的大小,甚至超过它.
我已经看到了整个范围内的方法,从仅计算"操作"非注释非空白行到"XXX行测试,注释代码",这更像是在所有代码文件中运行"wc -l"项目".
您的个人偏好是什么?为什么?
我正在研究A*路径寻找算法的定义,它似乎在不同的地方有所不同.
不同之处在于在遍历节点的后继者时执行的操作,并且发现后继者在关闭列表上.
我很困惑 - 哪种方法是正确的?直觉上,第一个对我来说更有意义,但我想知道定义的差异.其中一个定义是错误的,还是它们在某种程度上是同构的?
algorithm artificial-intelligence a-star dijkstra path-finding
[ 我能找到的唯一类似的问题很久以前就被回答了,并且主要包含对IronPython的引用.我想考虑其他选项]
我们有一个用C#编写的复杂数据分析应用程序.该应用程序应为用户提供定制数据分析任务的复杂方法.目前,我们使用配置文件和Excel表的混合来指定它,但它变得难以处理,所以我们正在寻找一种嵌入的脚本语言.
什么是C#/ .NET嵌入最好的简单脚本语言?有可能以某种方式嵌入VBA类似于Excel/Word?或者是使用JavaScript/Lua?
不用说,将主应用程序中的一些API和对象暴露给嵌入式脚本应该很容易.
我正在编写一个脚本,必须移动一些文件,但不幸的是它似乎并没有os.path
很好的国际化.当我有希伯来语命名的文件时,有问题.这是目录内容的屏幕截图:
(来源:thegreenplace.net)
现在考虑这个代码遍历此目录中的文件:
files = os.listdir('test_source')
for f in files:
pf = os.path.join('test_source', f)
print pf, os.path.exists(pf)
Run Code Online (Sandbox Code Playgroud)
输出是:
test_source\ex True
test_source\joe True
test_source\mie.txt True
test_source\__()'''.txt True
test_source\????.txt False
Run Code Online (Sandbox Code Playgroud)
注意如何os.path.exists
认为希伯来语命名的文件甚至不存在?我怎样才能解决这个问题?
Windows XP Home SP2上的ActivePython 2.5.2
以下代码试图说明我想要的内容.我基本上想要两个"随机"的实例,它们彼此独立地运行.我想在一个类中种子"随机"而不影响另一个类中的"随机".我怎样才能做到这一点?
class RandomSeeded:
def __init__(self, seed):
import random as r1
self.random = r1
self.random.seed(seed)
def get(self):
print self.random.choice([4,5,6,7,8,9,2,3,4,5,6,7,])
class Random:
def __init__(self):
import random as r2
self.random = r2
self.random.seed()
def get(self):
print self.random.choice([4,5,6,7,8,9,2,3,4,5,6,7,])
if __name__ == '__main__':
t = RandomSeeded('asdf')
t.get() # random is seeded within t
s = Random()
s.get()
t.get() # random should still be seeded within t, but is no longer
Run Code Online (Sandbox Code Playgroud)