这个算是C++嵌入python吧,利用python实现显示和事件处理,C++实现逻辑 以后有时间也会反过来试试:) import pygame import sys import os import ctypes def cur_file_dir(): #获取脚本路径 path = sys.path[0] #判断为脚本文件还是py2exe编译后的文件,如果是脚本文件,则返回的是脚本的目录,如果是py2exe编译后的文件,则返回的是编译后的文件路径 if os.path.isdir(path): return path elif os.path.isfile(path): return os.path.dirname(path) #call dll path = cur_file_dir() print path rblogic = ctypes.CDLL(path+r'/rblogic.dll') #pygame init pygame.init() screen = pygame.display.set_mode((640,500),0,32) pygame.display.set_caption('RussiaBoxGame!_by warmtrue') rblogic.InitGame() moveflag = 0 font = pygame.font.Font(os.environ['SYSTEMROOT'] + u"//Fonts//simsun.ttc", 40) fontsmall = pygame.font.Font(os.environ['SYSTEMROOT'] + u"//Fonts//simsun.ttc", 15) fontless = pygame.font.Font(os.environ['SYSTEMROOT'] + u"//Fonts//simsun.ttc", 15) #game main loop while True: screen.fill((0,0,0)) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN and event.key == pygame.K_UP: moveflag = 4 elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: moveflag = 1 elif event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN: moveflag = 3 elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: moveflag = 2 elif event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN: moveflag = 6 moveflag = rblogic.GameLoop(moveflag) for i in range(0,19): for j in range(0,10): t = rblogic.check(i,j) if t > 0: if t == 1: gamebox = pygame.image.load('red.bmp').convert() elif t == 2: gamebox = pygame.image.load('yellow.bmp').convert() elif t == 3: gamebox = pygame.image.load('blue.bmp').convert() elif t == 4: gamebox = pygame.image.load('white.bmp').convert() elif t == 5: gamebox = pygame.image.load('green.bmp').convert() else: gamebox = pygame.image.load('purple.bmp').convert() screen.blit(gamebox,(100+j*20,450-i*20)) gamel = pygame.image.load('l.bmp').convert() screen.blit(gamel,(90,470)) screen.blit(gamel,(90,80)) gameh = pygame.image.load('h.bmp').convert() screen.blit(gameh,(90,80)) screen.blit(gameh,(300,80)) gamescore = rblogic.getScore() text = font.render(r"Your score is %d"%(gamescore),1, (55, 200, 140)) screen.blit(text,(50,20)) text = fontsmall.render('''Developed by warmtrue''',1, (15, 150, 240)) screen.blit(text,(350,400)) text = fontless.render('''Use python 2.5.4 and pygame''',1, (15, 100, 200)) screen.blit(text,(350,440)) pygame.display.update()