GUI .basテストのライブラリがありません。どのように取得しますか?ld:-lX11、-lXext、-lXpm、-lXrandr、-lXrenderが見つかりません


1

私は、インタラクティブソフトウェア(この場合、Asteroidsと呼ばれる単純なゲーム)を作成する機能について、FreeBASICコンパイラをテストしていました。

そのための.basコードは次のとおりです。

' ÜÛÛÛÛÜ  ÜÛÛÛÛÛÛÜ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÜ   ÜÛÛÛÛÛÜ  ÛÛ ÛÛÛÛÛÛÜ  ÜÛÛÛÛÛÛÜ
'ÛÛ    ÛÛ ÛÛß  ßßß    ÛÛ    ÛÛ        ÛÛ   ßÛÛ ÛÛß   ßÛÛ ÛÛ ÛÛ   ßÛÛ ÛÛß  ßßß
'ÛÛ    ÛÛ ßÛÛÜ        ÛÛ    ÛÛ        ÛÛ   ÜÛÛ ÛÛ     ÛÛ ÛÛ ÛÛ    ÛÛ ßÛÛÜ
'ÛÛÛÛÛÛÛÛ   ßÛÛÜ      ÛÛ    ÛÛÛÛÛÛ    ÛÛÛÛÛÛß  ÛÛ     ÛÛ ÛÛ ÛÛ    ÛÛ   ßÛÛÜ
'ÛÛ    ÛÛ     ßÛÛÜ    ÛÛ    ÛÛ        ÛÛ   ÛÛ  ÛÛ     ÛÛ ÛÛ ÛÛ    ÛÛ     ßÛÛÜ
'ÛÛ    ÛÛ ÛÛÜ  ÜÛÛ    ÛÛ    ÛÛ        ÛÛ    ÛÛ ÛÛÜ   ÜÛÛ ÛÛ ÛÛ   ÜÛÛ ÛÛÜ  ÜÛÛ
'ÛÛ    ÛÛ  ßÛÛÛÛß     ÛÛ    ÛÛÛÛÛÛÛÛÛ ÛÛ    ÛÛ  ßÛÛÛÛÛß  ÛÛ ÛÛÛÛÛÛß   ßÛÛÛÛß
'
'This is a one person game.  The object is to shoot the falling asteroids and
'keep them from hitting the surface.   Use the left and right arrow keys to
'move your gun and the up key to fire.  The "P" button pauses the game, and
'the "Q" button ends it.  When a game is paused, hit space to make it run
'again.  Scoring is based on the level you're on.  The higher the level, the
'more points for hit asteroids, and the less points taken away for missed
'asteroids.  While you play, you may notice the screen flickering badly, or
'the action to fast.  To correct this, make the number after Flicker.Control
'(shown below) bigger.  If the game goes too slow, make the number smaller.
Flicker.Control = 500   ' Now press "F5" to play.
'
'
'

SCREEN 7       '320 X 200 resolution
RANDOMIZE TIMER

movement = 0

playagain:
CLS
LOCATE 12, 1
COLOR 15
INPUT ; "What level do you want to start at"; level
LOCATE 12, 1
PRINT "                                         "
gun = 165
missile.x = -5000
missile.y = 5000
totalhit = 0
misses = 0
totaldropped = 0

newasteroid:
asteroid.x = 319 * RND + 1
asteroid.y = 1
totaldropped = totaldropped + 1

a:

COLOR 0
WHILE movement = 1
LINE (gun2 - 20, 170)-(gun2 + 20, 170)
LINE (gun2, 155)-(gun2 - 20, 170)
LINE (gun2, 155)-(gun2 + 20, 170)
LINE (gun2 - 3, 147)-(gun2 + 3, 170), , BF
movement = 0
WEND

COLOR 15
LINE (gun - 20, 170)-(gun + 20, 170)
LINE (gun, 155)-(gun - 20, 170)
LINE (gun, 155)-(gun + 20, 170)
LINE (gun - 3, 147)-(gun + 3, 170), , BF
LINE (asteroid.x - 10, asteroid.y - 6)-(asteroid.x + 10, asteroid.y + 6), 6, BF
CIRCLE (missile.x, missile.y), 3, 12
LINE (1, 171)-(319, 171), 9

FOR count = 1 TO Flicker.Control
NEXT count


asteroid.x2 = asteroid.x
asteroid.y2 = asteroid.y
missile.x2 = missile.x
missile.y2 = missile.y

COLOR 0
LINE (asteroid.x2 - 10, asteroid.y2 - 6)-(asteroid.x2 + 10, asteroid.y2 + 6), 0, BF
CIRCLE (missile.x2, missile.y2), 3, 0



LOCATE 23, 1
COLOR 9
PRINT "Shot:"; totalhit
LOCATE 23, 11
PRINT "Level:"; level
LOCATE 23, 21
PRINT "Score:"; score

missile.y = missile.y - 5

IF missile.y < 1 THEN
missile.y = 5000
END IF

asteroid.y = asteroid.y + level * .75

IF asteroid.y > 170 THEN
CIRCLE (asteroid.x, asteroid.y), 30, 14
CIRCLE (asteroid.x, asteroid.y), 30, 0
misses = misses + 1
IF misses = 10 THEN
GOTO gameover
END IF
score = score - INT(10 / level)
GOTO newasteroid
END IF

IF missile.x - 3 < asteroid.x + 10 AND missile.x + 3 > asteroid.x - 10 AND missile.y + 3 < asteroid.y + 6 THEN
totalhit = totalhit + 1
IF totalhit / 10 = INT(totalhit / 10) THEN
level = level + 1
misses = 0
END IF
score = score + 10 * level
FOR ctr = 1 TO 7
  radius = 15 * RND + 5
  offset.x = 40 * RND - 20
  offset.y = 40 * RND - 20
  circlecolor = 16 * RND
  CIRCLE (asteroid.x + offset.x, asteroid.y + offset.y), radius, circlecolor
  FOR ctr2 = 1 TO 50
  NEXT ctr2
  CIRCLE (asteroid.x + offset.x, asteroid.y + offset.y), radius, 0
NEXT ctr
missile.y = 5000
GOTO newasteroid
END IF

move$ = INKEY$

SELECT CASE move$
CASE CHR$(0) + "K"
gun2 = gun
gun = gun - 5
movement = 1
CASE CHR$(0) + "M"
gun2 = gun
gun = gun + 5
movement = 1
CASE CHR$(0) + "H"
missile.x = gun
missile.y = 147
CASE "q"
GOTO quit
CASE "p"
COLOR 15
LINE (gun - 20, 170)-(gun + 20, 170)
LINE (gun, 155)-(gun - 20, 170)
LINE (gun, 155)-(gun + 20, 170)
LINE (gun - 3, 147)-(gun + 3, 170), , BF
LINE (asteroid.x - 10, asteroid.y - 6)-(asteroid.x + 10, asteroid.y + 6), 6, BF
CIRCLE (missile.x, missile.y), 3, 12
LOCATE 12, 4
PRINT "Game Paused Hit Space to continue"
startpause:
  a$ = INKEY$
  SELECT CASE a$
  CASE " "
  LOCATE 12, 4
  PRINT "                                  "
  GOTO endpause
  END SELECT
GOTO startpause
END SELECT

endpause:

GOTO a

gameover:

LINE (1, 171)-(319, 171), 9
LOCATE 23, 1
COLOR 9
PRINT "Shot:"; totalhit
LOCATE 23, 11
PRINT "Level:"; level
LOCATE 23, 21
PRINT "Score:"; score
COLOR 15

LINE (gun - 20, 170)-(gun + 20, 170)
LINE (gun, 155)-(gun - 20, 170)
LINE (gun, 155)-(gun + 20, 170)
LINE (gun - 3, 147)-(gun + 3, 170), , BF

COLOR 4
LOCATE 12, 1
PRINT "E                                      O"
LOCATE 12, 1
PRINT "ME                                    OV"
LOCATE 12, 1
PRINT "AME                                  OVE"
LOCATE 12, 1
PRINT "GAME                                OVER"
LOCATE 12, 1
PRINT " GAME                              OVER "
LOCATE 12, 1
PRINT "  GAME                            OVER "
LOCATE 12, 1
PRINT "   GAME                          OVER "
LOCATE 12, 1
PRINT "    GAME                        OVER "
LOCATE 12, 1
PRINT "     GAME                      OVER "
LOCATE 12, 1
PRINT "      GAME                    OVER "
LOCATE 12, 1
PRINT "       GAME                  OVER "
LOCATE 12, 1
PRINT "        GAME                OVER "
LOCATE 12, 1
PRINT "         GAME              OVER "
LOCATE 12, 1
PRINT "          GAME            OVER "
LOCATE 12, 1
PRINT "           GAME          OVER "
LOCATE 12, 1
PRINT "            GAME        OVER "
LOCATE 12, 1
PRINT "             GAME      OVER "
LOCATE 12, 1
PRINT "              GAME    OVER "
LOCATE 12, 1
PRINT "               GAME  OVER "

FOR ctr = 1 TO 500
NEXT ctr

LOCATE 13, 13
PRINT "Play Again? y/n"
playagain.y.n:
y.n$ = INKEY$
SELECT CASE y.n$
CASE "n"
GOTO quit
CASE "y"
GOTO playagain
END SELECT
GOTO playagain.y.n

quit:

このコマンドを使用して、データを使用可能なアプリケーションにコンパイルしました。

$ /usr/local/bin/fbc -lang qb roids.bas

私が手に入れたのはエラーで、このコードを適切にコンパイルするためのライブラリが見つからないことを教えてくれました。

ld: cannot find -lX11
ld: cannot find -lXext
ld: cannot find -lXpm
ld: cannot find -lXrandr
ld: cannot find -lXrender

私の質問は、このコードを適切にコンパイルして小さなゲームを作成するために、これらのライブラリをどこでどのようにダウンロードできますか?

少し早いですがお礼を。


ああ、もう一つ。ここのコードは少し不安定です。だからここに私はからそれを得たのリンクですinstructables.com/files/orig/FBS/OILB/GV0L5OJD/...
Miesrah

回答:


1

FreeBASICコンパイラから取得したエラーから、次のパッケージをインストールする必要があります。

sudo apt-get install libx11-dev libxext-dev libxpm-dev libxrandr-dev libxrender-dev

-devパッケージをインストールする必要がある場合、http://packages.ubuntu.com/はライブラリパッケージ名を見つけるのに適した場所です。

最後に使用/usr/local/bin/fbc -lang qb roids.basしてroids.basファイルをコンパイルし、次のコマンドで開始します:

./roids 

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.