« 2018年9月 | トップページ | 2018年12月 »

2018/11/23

おお、Wizardry!

Pythonでゲームのネタ探しで、Wizardryあたりが、ちょうどよいから、誰か作ってるかもと思ったら、javaで作った人が居るらしい。

で、ダウンロードして動かしてみました。

うっわぁ!「狂王の試練場」じゃんこれ、 懐かしい!!(何でも、「剣匠王の試練場」とのこと、トレボーじゃないのね)
と言う訳で、ハマってしまいました。(笑)

Screenshot_from_20181123_135412

ふむ、冒険者の宿は健在だが、ギルガメッシュの酒場と、ぼったくる・・・ボルタック商店は、名前が変わってますね。この辺は、著作権への配慮かな?
著作権といえば、やっぱり、呪文名が使えないのねぇ(笑)

Wizardryは、好き嫌いが分かれるゲームです。最近の至れり尽くせりなゲームをやっている人だと、ストーリーすら存在せず、グラフィックも絵が出る程度の、このゲームは、「何が面白いの?」と思う人が多いですが、私のようにAppleⅡからやってると、これがなんとも言えず楽しいんです。

「Wizardryは、プレイするんじゃない、嗜むんもんだ、いいね!」

| | コメント (0) | トラックバック (0)

2018/11/18

Pythonでグラフィックやるには?

最近、仕事でPythonばかり使う羽目になっていて、ふと、

「Pythonで、ゲーム作ってる人いるのかな?」

と思ったので調べてみた。(ちなみに、"Python"? "python"? どっちだろう? HP見るとロゴが小文字で記述は大文字???)

まず、Pythonに、デフォで入っているグラフィックライブラリは、TkinterというGUIライブラリになる。
TkinterはPythonのTcl/Tkインターフェースにあたるものなので、あくまでGUIライブラリであり、ウインドウに対する基本的な描画機能しか持っていない。

とりあえず、WebにあったSampleを見ながら使ってみる。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from tkinter import *

class Application(object):
 def __init__(self):
  self.__tk = Tk()
  self.__cv = Canvas(self.__tk, width=640, height=400)
  self.__cv.pack()
  return

 def run(self):
  # 矩形描画
  self.__cv.create_rectangle(0, 0, 100, 100, fill="red")
  self.__cv.create_rectangle(100, 100, 200, 200, fill="green")
  # 線描画
  self.__cv.create_line(0, 0, 100, 100, fill="blue", width=5)
  self.__cv.create_line(0, 0, 400, 0, fill="yellow", width=5)

  self.__tk.mainloop()
  return

if __name__ == "__main__":
 app = Application()
 app.run()


って、ココログって、ソースコードがうまく入らないのね。preタグ使うと無茶苦茶になるし・・・。
Gitのマークアップでも、これより数段はマシなんですが・・・。
流石は、Niftyクオリティ。相変わらず地を這ってます。
あっ、インデントするために、空白は全角になってます。ソースを、そのままコピペするとえらーになるので注意して下さい。

で、結果はこんな感じ。
Sample1

さて、PythonのGameライブラリですが、

■ PyGame
■ PySDL2
■ PyOpenGL

あたりがあるらしい。
元々は、PyGameがデファクトみたいだったが、更新が止まっているようで、その後継がPySDL2なのだそう。
で、こいつらは、インストールしてやる必要があるのだが、dnfで探してみると、PyGameとPyOpenGLはPython3版があるらしので、とりあえずインストールした。

# dnf install python3-pygame

# dnf install python3-pyopengl*

でこちらも、WebにあったPyOpenGLのSampleを見ながら使ってみる。こちらも、インデントするために空白が全角になってますのでコピペは注意です。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from OpenGL.GL import *
from OpenGL.GLUT import *

class Application(object):
 def __init__(self):
  glutInit(sys.argv)
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) # 表示設定
  glutInitWindowSize(400, 400) # 画面サイズ
  glutInitWindowPosition(100, 100) # 画面の表示位置
  glutCreateWindow("TEST") # ウィンドウの名前

  glClearColor(0.0, 0.0, 0.0, 0.0)
  glMatrixMode(GL_PROJECTION)
  glLoadIdentity()
  glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0)
  return

 def draw(self):
  # 座標(0.25,0.25)から幅0.5,高さ0.5の四角形を描く
  x, y, w, h = 0.25, 0.25, 0.5, 0.5
  glClear(GL_COLOR_BUFFER_BIT)
  # 四角形の色(緑)
  glColor3f(0.2, 0.8, 0.2)

  # 四角形の頂点座標
  glBegin(GL_POLYGON)
  glVertex3f(x, y, 0.0)
  glVertex3f(x + w, y, 0.0)
  glVertex3f(x + w, y + h, 0.0)
  glVertex3f(x, y + h, 0.0)
  glEnd()

  glFlush()
  return

 def run(self):
  glutDisplayFunc(Application.draw) # 描画
  glutMainLoop()
  return

if __name__ == "__main__":
 app = Application()
 app.run()

で結果はこちら。
Sample2


なんとなく、OpenGLは使えそうな感じです。
注意点としては、Python3用なんで、

$ python hoge.py


では動かないことでしょうか。

$ python3 hoge.py


で動かして下さい。

| | コメント (0) | トラックバック (0)

« 2018年9月 | トップページ | 2018年12月 »