FC2ブログ
RPG製作講座
こちらのコンテンツはHSP3の基礎命令を覚えながら
HSP(3.0)で RPGを作ってみようという講座です。

HSP初心者の方や、RPGのソースコードを参考にしたい
という方におすすめです。
STEP.1-1
タイトルとウィンドウの変更
新しく扱う命令
  • screen命令
  • title命令
何をするのか?
  • screen命令でHSP3のウィンドウを表示させてみよう。
  • title命令でタイトルバーのタイトルを変更してみよう。
STEP.1-2
フォントサイズの変更とメッセージの表示
新しく扱う命令
  • font命令
  • mes命令
何をするのか?
  • font命令でフォントの設定を変更してみよう。
  • mes命令で画面に文字を表示してみよう。
STEP.1-3
繰り返し処理と描写先の変更
新しく扱う命令
  • repeat命令
  • loop命令
  • pos命令
何をするのか?
  • repeat命令で繰り返しの処理を命令してみよう。
  • loop命令でrepeat 命令の終わりを宣言しよう。
  • pos命令で文字の描写先を指定してみよう。
STEP.1-4
キー入力と待ち時間
新しく扱う命令
  • stick命令
  • wait命令
何をするのか?
  • stick命令でキー入力を所得しよう。
  • wait命令でプログラムを一時中断してみよう。
STEP.1-5
塗りつぶしと色変更と再描写
新しく扱う命令
  • boxf命令
  • color命令」
  • redraw命令
何をするのか?
  • boxf命令で短径を描写してみよう。
  • color命令で色の指定をしてみよう。
  • redraw命令で描写モードを切り替えてみよう。
STEP.1-6
乱数発生と時間・日付の取得
新しく扱う命令
「RANDOMIZE 命令」と「RND命令」と「GETTIME命令」

RANDOMIZE 命令で乱数発生の準備をしよう。
RND命令で実際に乱数を発生させよう。
GETTIME命令で現在の時刻データを取得してみよう。
STEP.2-1
ラベルとサブルーチン
新しく扱う命令
「GOTO命令」と「GOSUB命令」と「RETURN命令」

GOTO命令で指定ラベルにジャンプしてみよう。
GOSUB命令でサブルーチンにジャンプしてみよう。
RETURN命令でサブルーチンから復帰してみよう。
STEP.2-2
配列変数と配列の要素
新しく扱う命令
「DIM命令」と「LENGTH命令」

DIM命令で配列変数を作成してみよう。
LENGTH命令で配列の要素を取得してみよう。
STEP.2-3
画像の読み込みと画像コピー
新しく扱う命令
「BUFFER命令」と「PICLOAD命令」
「GSEL命令」と「GCOPY命令」

BUFFER命令で仮想ウィンドウを作ってみよう。
PICLOAD命令で画像ファイルを読み込んでみよう。
GSEL命令で描写先ウィンドウを切り替えてみよう。
GCOPY命令で画像ファイルをコピーしてみよう。
STEP.2-4
画面のコピーモードと比較処理
新しく扱う命令
「GMODE命令」と「SWITCH命令」と「CASE命令」
「SWBREAK命令」と「SWEND」

GMODE命令でウィンドウのコピーモードの指定をしよう。
SWITCH命令で比較ブロックの開始を宣言しよう。
CASE命令で比較値の指定をしよう。
SWBREAK命令で比較実行の脱出をしてみよう。
SWEND命令で比較ブロックの終了を宣言しよう。
STEP.2-5
テキストデータの読み込みと割り当て
新しく扱う命令
「SDIM命令」と「NOTESEL命令」と「NOTELOAD命令」
「NOTEGET命令」と「GETSTR命令」と「STRSIZE命令」
「INT命令」

SDIM命令で文字列型の配列変数を作成してみよう。
NOTESEL命令で対象バッファを指定しよう。
NOTELOAD命令でバッファにテキストデータを読み込んでみよう。
NOTEGET命令でバッファの指定行を読み込んでみよう。
GETSTR命令でバッファから文字列を読み込んでみよう。
STRSIZE命令で読み出しバイト数を取得してみよう。
INT命令で文字列データを整数値に変換しよう。
STEP.2-6
キャラクターのアニメーションと終了選択
新しく扱う命令
「ONEXIT命令」と「DIALOG命令」

ONEXIT命令で終了時のラベルジャンプ指定を決めよう。
DIALOG命令でダイアログを表示してみよう。
SRPG製作
ただただ勢い任せに作ったSRPG(シミュレーションRPG)の
サンプル・ソースコードや実行ファイル等を公開しています。

ブログを始めるきっかけとなった作品です(随時更新)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

簡易バトルシミュレータを公開します。

育成シミュレーション用に組み込もうと思っていた
簡易バトルシミュレータを公開します。

セカンドールマスターの様なフリーソフトを作ろうと
以前考えていたことがあり、その戦闘部分を手直ししたものが
こちらのソースコードです。

構想としては武道大会のような形式で戦っていき
優勝者を決め、賞金などが支払われるといったものを作りたいです。
現在は開発を中止しているので、とりあえずUPしてみます。

被ダメージ部分の計算は
攻撃力と防御力と運の3つの要素で決定します

実行ファイルとソースコードはこちら(83.0 KB)
http://pokpokgame.huuryuu.com/soft/Battle05.zip

※余分なソースコードも残っていますが
 動作には全く関係無いので、見なかった事にしてください(==;)
	;--------------------------
; 簡易バトルシミュレーターから派生
title "簡易バトルシミュレーター"
;-------------------------
randomize
font "", 10

;====================================
; モジュール定義
;====================================
#module
#deffunc cbox int x0, int y0, int x1, int y1
color 255,255,255
boxf x0, y0, x1, y1
color
return

#deffunc step
redraw 1
repeat
wait 3
stick key
if key=256 : break
loop
return
#global
;====================================

;--------------------------
; ステータスデータの変数確保
;--------------------------
; fri 仲間の数
; lv レベル
; exp 経験値
; hp ヒットポイント
; mhp max_hp
; mp
; mmp max_mp
#const fri 20
dim pr, fri
#define lv pr. c. 0
#define exp pr. c. 1
#define hp pr. c. 2
#define mhp pr. c. 3
#define mp pr. c. 4
#define mmp pr. c. 5
#define pow pr. c. 6
#define dex pr. c. 7
#define spd pr. c. 8
#define mgc pr. c. 9
#define atk pr. c. 10
#define hit pr. c. 11
#define cri pr. c. 12
#define grd pr. c. 13
#define esp pr. c. 14
#define act pr. c. 15
#define age pr. c. 16

;--------------------------
; 名前の決定(未実装)
;--------------------------
//sdim name
//notesel name
//noteload "name.dat"

;--------------------------
; ランダムでパラメータを割り振っていく
; 3つのタイプを用意する
;--------------------------
repeat fri
c = cnt
repeat 10
switch cnt
case 0 : lv = 0 : swbreak
case 1 : exp = 0 :swbreak
case 2 : mhp = 30+rnd(5) : swbreak
case 3 : hp = mhp : swbreak
case 4 : mmp = 30+rnd(5) : swbreak
case 5 : mp = mmp : swbreak
case 6 : pr. c. cnt = rnd(10) + 5 : swbreak
case 7 : pr. c. cnt = rnd(10) + 5 : swbreak
case 8 : pr. c. cnt = rnd(10) + 5 : swbreak
case 9 : pr. c. cnt = rnd(10) + 5 : swbreak
swend
loop
loop


;--------------------------
; 装備品(未実装)
wep = 10, 80; ソード
prt = 14, 3
;--------------------------

repeat fri
c = cnt
repeat 4
pr. c. 10 = pow / 2 + wep.0
pr. c. 11 = 10 + wep.1
pr. c. 12 = 0
pr. c. 13 = dex / 4 + prt.0
pr. c. 14 = 10 + prt.1
loop
loop
;--------------------------

;==========================
; 仲間のパロメータ表示
;==========================
repeat fri
c = cnt
repeat 15
pos cnt*30 + 20, c*12 + 30
mes ""+pr. c. cnt+""
loop
loop
;==========================

fact = "Lv","Exp","HP","MHP","MP","MMP","POW","DEX","SPD","MGC","ATK","HIT","CRI","GRD"
foreach fact
pos cnt*30 + 20, 10
mes ""+fact.cnt+""
loop

pos 550,10 : button "Battle",*battle


///////////////////////////
; 敵さん用意
///////////////////////////
dim ene, 4
ene.0 = 100
ene.1 = 100
ene.2 = 0
color 255, 255, 255
///////////////////////////
stop


*battle
redraw 0
wait 5

;--------------------------
; 画面クリア
color 255,255,255
boxf
color 0, 0, 0
;--------------------------

;--------------------------
; 格パラメータのインデックス表示
foreach fact
pos cnt*30 + 20, 10
mes ""+fact.cnt+""
loop
;--------------------------


;==========================
; 仲間のパロメータ表示
;==========================
repeat fri
c = cnt

repeat 15
pos cnt*30 + 20, c*12 + 30
mes ""+pr. c. cnt+""
loop

// 死亡者は飛ばす
if hp <= 0 : continue

switch cnt
case 0 : c.1 = 0 : c.2 = 0 : swbreak
case 1 : c.1 = 0 : c.2 = 1 : swbreak
case 2 : c.1 = 0 : c.2 = 2 : swbreak
case 3 : c.1 = 1 : c.2 = 0 : swbreak
case 4 : c.1 = 1 : c.2 = 1 : swbreak
case 5 : c.1 = 1 : c.2 = 2 : swbreak
case 6 : c.1 = 2 : c.2 = 0 : swbreak
case 7 : c.1 = 2 : c.2 = 1 : swbreak
case 8 : c.1 = 2 : c.2 = 2 : swbreak
swend

loop
;==========================

redraw 1

c.1 = 0
c.3 = 1// 試合
turn = 0
goto *event
goto *battle


*event
// 対戦相手
c.2 = c.1 + 1

repeat
redraw 0
color 255, 255, 255
boxf 10, 300, 400, 480
color 0, 0, 0
wait 20

// 攻撃ターンの切り替え
if c.0 = c.2 {
c.0 = c.1
} else {
c.0 = c.2
turn++
}

// ターン数計測
pos 10,300
mes "第 "+c.3+" 戦 ターン"+turn+""

//--------------------------------
// HPの表示
//--------------------------------
// 対戦者
c = c.1
pos 10, 320
mes "キャラ"+c+"のターン HP "+hp+" / "+mhp+""
// 挑戦者
c = c.2
pos 200, 320
mes "キャラ"+c+"のターン HP "+hp+" / "+mhp+""

//--------------------------------
// 行動可能までターンを貯める
//--------------------------------
c = c.1 : turn.1 += spd
c = c.2 : turn.2 += spd

//--------------------------------
// 攻撃
//--------------------------------
repeat 2, 1

// 攻撃ターンの切り替え
if c.0 = c.2 {
c.0 = c.1
} else {
c.0 = c.2
}

//--------------------------------
// ターンの描写
//--------------------------------
if cnt = 2 : a = 200 : else : a = 0
boxf 10+a, 340, turn.cnt+a, 350
pos 10+a, 360

if turn.cnt >= 100 {
redraw 1

a = rnd(3)
switch a
case 0
mes "攻撃ミス"
a.3 = 0
swbreak
case 1
mes "通常攻撃"
a.3 = 1
swbreak
case 2
mes "クリティカル"
a.3 = 2
swbreak
swend
wait 30

// ダメージ計算
a.2 = rnd(3)+1 * a.3
if c = c.1 {
a.1 = pow + a.2
c = c.2
a.1 -= dex
if a.1 < 0 : a.1 = 0 // ダメージ0の場合
hp -= a.1 + 1
if hp < 0 : hp = 0
} else {
a.1 = pow + a.2
c = c.1
a.1 -= dex
if a.1 < 0 : a.1 = 0 // ダメージ0の場合
hp -= a.1 + 1
if hp < 0 : hp = 0
}

// メッセージ表示
if c = c.1 {
mes "キャラ"+c.1+"に"+a.1+"のダメージ"
} else {
mes "キャラ"+c.2+"に"+a.1+"のダメージ"
}
wait 30

// 残りHP表示
mes "HP "+hp+" / "+mhp+""
wait 40

// 負け判定
if hp <= 0 {
font "", 18
mes ""+c+"の負け"
redraw 1
wait 100
font "", 10
go_next = 1
}

turn.cnt = 0
}
loop
redraw 1

if go_next = 1 {
go_next = 0
break
}
loop

// 次の対戦へ
turn = 0
c.3++
if c.1 < fri-2 : c.1+2 : else : stop

goto *event


スクリーンショット1
bs01.JPG

20人のキャラクターを作成し、ランダムでパラメーターを決めています。
一対一の戦闘方式になっており、[ Battle ]ボタンを押すと戦闘が始まります。
ちなみに、全キャラクターが戦い終わるまでただ見ているだけです。

育成パートも作成していたのですが、気力が底をついたみたいなので
完成形に近づいた時にでも公開しようかとおもいます。
スポンサーサイト

テーマ : ゲーム製作 関連
ジャンル : ゲーム

tag : HSP ソース

コメントの投稿

非公開コメント

カテゴリ
検索フォーム
カレンダー
03 | 2019/04 | 05
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -



月別アーカイブ
リンク
RSSリンクの表示
プロフィール

アクアブルブル

Author:アクアブルブル
HSPを使ってゲームを製作しています。

ランキングに参加しています。


ブログジャンキーにも登録してます。


リンクもご自由にどうぞ。

こちらは掲示板入り口

ユーザータグ

SRPG クォータービュー ニコニコ動画 Elona 講座 SLG ソース ゲーム google データ構造 ワーネバ TonyuSystem 経営シミュレーション TRPG RPG フリーソフト HSP HSPコンテスト シナリオ JavaScript アルゴリズム パズル MAP ミスティックシード A* ふりーむ ブログ コンテスト 

最新コメント
フリーソフトで面白いゲーム まとめサイト
スポンサードリンク


アフィリエイトのリンクシェアで、チャリティ活動



更新確認ツール

FC2カウンタ



googleボットチェッカー

Googleボットチェッカー

msnボットチェッカー

MSNボットチェッカー



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。