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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0501
ともサッカーゲームで10回勝ったら次のステージへいけるようにしたい                6未解決


とも

リンク

2017/5/1(Mon) 15:39:02|NO.79436

このサッカーゲームで次のステージへいけるようにしたいのですが

だれか教えてください


; サンプルゲーム : ミニサッカー
;
; 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



この記事に返信する


mamekodaihuk

リンク

2017/5/1(Mon) 15:50:49|NO.79438

俺も気になる



きんさん

リンク

2017/5/1(Mon) 16:04:20|NO.79441

買った回数を変数化して、そこから if x=10 :goto*ほにゃらら
とかやってくらさい。くわしくは隣の人にきこう



masa

リンク

2017/5/1(Mon) 16:47:23|NO.79445

似たような質問があったので、こちらを参照してみてください。
http://hsp.tv/play/pforum.php?mode=all&num=77391



名無し

リンク

2017/5/2(Tue) 01:42:22|NO.79460

ともさん、別に名前変えてまで「俺も気になる」と書き込まなくても
きんさんさんや、masaさんのように教えてくれる人はいます。
迷惑になるのでやめたほうがいいですよ。



とも

リンク

2017/5/2(Tue) 20:57:10|NO.79471

友達がいたずらでやってきたみたいですね。
私は何もやってません。



Mitumitu2016

リンク

2017/5/15(Mon) 20:59:53|NO.79794

まらそれはそれで友達がやったことで謝ればいいのでは?



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.79436への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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