HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0511
hsp好きこのサッカーゲームで10回勝ったら次のステージへ行けるようなゲームをつくりたいです3未解決


hsp好き

リンク

2017/5/11(Thu) 15:29:32|NO.79674

元々hspに入っていたゲームです

これを改造して10回勝ったら次のステージへ行けるようなゲームを作りたいです

長文失礼します

;
; サンプルゲーム : ミニサッカー
;
; 2人で対戦して遊ぶサッカーゲームです。
; 左プレイヤーは、[A][W][D][X]で移動。[S]でゴール前に戻る。
; 右プレイヤーは、カーソルキーで移動。[Enter]でゴール前に戻る。
; ボールを蹴って、相手のゴールに入れてください。
; 3点先に取ったプレイヤーの勝ちです。
; [script by よかいち]
;
;
world_x = 640; ウィンドウ全体のX座標
world_y = 480;ウィンドウ全体のY座標
bpx = 0 : bpy = 0 ; ボールの移動量
gsx = 128 : gsy = 256 ; ゴールのX,Yサイズ
gx1 = 0 : gy1 = 112 ; ゴール1のX座標Y座標
gx2 = 512 : gy2 = 112 ; ゴール2のX座標Y座標
kickx = 1.8 ; キックでボールが動く強さX
kicky = 2.0 ; キックでボールが動く強さY

randomize
*menu

screen 0, world_x, world_y

title "ミニサッカー"
cls 1
font "MS ゴシック", 80, 1
pos 80,140 : mes "ミニサッカー"
font "MS ゴシック", 32, 0
pos 170, 300 : mes "Enterキーでスタート"
repeat



await 30
getkey a, 13 : if a : break

loop

cls 4
score1 = 0
score2 = 0

*main2

sysfont 0
bx = world_x / 2
bpx = 0 : bpy = 0
x1 = 0 : y1 = 208 ; 人1のX座標Y座標
x2 = 592 : y2 = 208 ; 人2のX座標Y座標
bx = world_x / 2 : by = world_y / 2 ; ボールのX座標Y座標
gamef = 0

*main

;全画面を消すところ- - - - - - - - - - - - - - - - - - - - - - -
redraw 0

color 0,0,128 : pos 0, 0: boxf ;画面クリア
color 0,0,255
boxf gx1,gy1,gx1+gsx,gy1+gsy
boxf gx2,gy2,gx2+gsx,gy2+gsy

color 255,255,255
pos world_x / 2 - 60, 0 : mes "1P:" + score1 + " .vs. 2P:" + score2

;ボールを表示するところ----------------------------------------------------------------------------

color 0, 255, 0 ;グリーン
pos bx, by : mes "●"

;人1を表示するところ----------------------------------------------------------------------------

color 255,255,255 ;白

pos x1, y1 + 0 * 16 : mes " ○/"
pos x1, y1 + 1 * 16 : mes "/1 "
pos x1, y1 + 2 * 16 : mes " ハ "

;人2を表示するところ----------------------------------------------------------------------------

color 0,255,255 ;水色

pos x2, y2 + 0 * 16 : mes " ○/"
pos x2, y2 + 1 * 16 : mes "/2 "
pos x2, y2 + 2 * 16 : mes " ハ "

redraw 1
;表示終わりウェイトウェイト-------------------------------------------------------------------

await 30

;エスケープキーで終了-------------------------------------------------------------------------
stick key, 15
if key & 128 : end

if rnd(2)=0 {
gosub *p1exec
gosub *p2exec
} else {
gosub *p2exec
gosub *p1exec
}

;ボールを動かすところ-----------------------------------------------------

bx = bx + bpx
by = by + bpy
if bpx>0 : bpx-
if bpx<0 : bpx+
if bpy>0 : bpy-
if bpy<0 : bpy+

;ボールが画面からはみ出しそうになったら補正-----------------------------------------------------
if bx < 0 {
bx=0
if bpx<0 : bpx=-bpx
gosub *p1win
}
if world_x - 16 <= bx {
bx = world_x - 16
if bpx>0 : bpx=-bpx
gosub *p2win
}
if by < 0 {
by = 0
if bpy<0 : bpy=-bpy
}
if world_y - 32 <= by {
by = world_y - 32
if bpy>0 : bpy=-bpy
}
;--------------------------------------------------------------------------------
if gamef=0 : goto *main

if score1 >= 3 : goto *p1end
if score2 >= 3 : goto *p2end
goto *main2
end

*p1exec
;人を動かすところ-------------------------------------------------------------------------------

dx1 = 0 : dy1 = 0 ;移動スピードクリア

getkey a, 'A' : if a : dx1 = -8 ;左
getkey a, 'W' : if a : dy1 = -8 ;上
getkey a, 'D' : if a : dx1 = 8 ;右
getkey a, 'X' : if a : dy1 = 8 ;下
getkey a, 'S' : if a : x1 = 0

x1 += dx1 : y1 += dy1 ;人移動
;ボールを動かす所-------------------------------------------------------------------------------
if ( x1 <= bx ) & ( bx < x1 + 48 ) & ( y1 <= by ) & ( by < y1 + 48 ) : bpx = int(kickx*dx1) : bpy = int(kicky*dy1)

return
*p2exec
;人を動かすところ-------------------------------------------------------------------------------

dx2 = 0 : dy2 = 0 ;移動スピードクリア

getkey a, 37 : if a : dx2 = -8 ;左
getkey a, 38 : if a : dy2 = -8 ;上
getkey a, 39 : if a : dx2 = 8 ;右
getkey a, 40 : if a : dy2 = 8 ;下
getkey a, 13 : if a : x2 = 640 - 16 * 3

x2 += dx2 : y2 += dy2 ;人移動
;ボールを動かす所-------------------------------------------------------------------------------
if ( x2 <= bx ) & ( bx < x2 + 48 ) & ( y2 <= by ) & ( by < y2 + 48 ) : bpx = int(kickx*dx2) : bpy = int(kicky*dy2)

return

*p1end
mstr = "1Pの勝ち!"
gosub *mstrput
goto *menu
*p2end
mstr = "2Pの勝ち!"
gosub *mstrput
goto *menu

*p1win
if by<gy1 : return
if by>gy1+gsy : return
score2 += 1 : gosub *goal
gamef = 1
return
*p2win
if by<gy2 : return
if by>gy2+gsy : return
score1 += 1 : gosub *goal
gamef = 2
return

*goal
mstr = "" + score1 + " VS " + score2
*mstrput
i = 60 : repeat 29
redraw 0 : color 0, 0, 128 : pos 0,0 : boxf
font "MS ゴシック", i, 0: color 128,128,128 : pos world_x / 2 - 120, world_y / 2 - 60 :mes mstr : redraw 1
await 30
i += 1 : loop
wait 200
return



この記事に返信する


Yuuki

リンク

2017/5/11(Thu) 16:18:53|NO.79676




hsp好き

リンク

2017/6/2(Fri) 18:11:44|NO.80068

それ僕のです。本当にこの前はとても悲しかったです。真面目に聞いているのでよろしくお願いします。



jsAster

リンク

2017/6/2(Fri) 18:51:21|NO.80070

まず最初から勉強してみれば?
そのほうが理解しやすいですよ。



ONION software Copyright 1997-2023(c) All rights reserved.