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 ソース

コメントの投稿

非公開コメント

カテゴリ
検索フォーム
カレンダー
12 | 2019/01 | 02
- - 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 31 - -



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

アクアブルブル

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

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


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


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

こちらは掲示板入り口

ユーザータグ

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

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


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



更新確認ツール

FC2カウンタ



googleボットチェッカー

Googleボットチェッカー

msnボットチェッカー

MSNボットチェッカー



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