Commit 67ed2671 authored by Tt's avatar Tt

游戏基础完成

parent 09e8fc29
{
"ver": "1.1.0",
"uuid": "8554a69c-42b9-426d-8b48-727195509b39",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.0",
"uuid": "4b91d1cc-8fb5-4acd-bc75-6fed2f9e5636",
"subMetas": {}
}
\ No newline at end of file
{
"ver": "1.1.0",
"uuid": "2b11885a-0cc4-48d2-9e8d-58be5f769274",
"subMetas": {}
}
\ No newline at end of file
This diff is collapsed.
......@@ -67,7 +67,6 @@ export default class NewClass extends MyCocosSceneComponent {
this.layout_start.active = true;
pg.audio.playAudioByUrl(Game.getIns().question.audio);
// this.log("test initView")
}
initEvent() {
pg.view.touchOn(pg.view.find(this.layout_start, 'btn_start'), this.onTouchStart, this);
......@@ -79,8 +78,17 @@ export default class NewClass extends MyCocosSceneComponent {
pg.event.on("speak_fail", () => { this.onSpeakFail() });
}
onTouchStart() {
this.layout_start.active = false;
cc.audioEngine.stopAllEffects();
this.playLocalAudio('btn');
this.showVs();
}
private showVs() {
setTimeout(() => {
pg.event.emit("game_start");
}, 100);
if(1)return;
let vs = cc.find("vs", this.node);
vs.active = true;
let player1 = cc.find("player1", vs);
......@@ -101,12 +109,6 @@ export default class NewClass extends MyCocosSceneComponent {
vs.active = false;
}).start();
}
onTouchStart() {
this.layout_start.active = false;
cc.audioEngine.stopAllEffects();
this.playLocalAudio('btn');
this.showVs();
}
//-----------------------------流程------------------------------
......@@ -115,7 +117,6 @@ export default class NewClass extends MyCocosSceneComponent {
private turnRobot: boolean;//当前是谁操作
private robotLevel: number;
onGameStart() {
this.initTouzi();
this.log("test onGameStart")
this.playerPoint = 0;
this.robotPoint = 0;
......@@ -129,7 +130,8 @@ export default class NewClass extends MyCocosSceneComponent {
this.robotLevel = 2;//0 1 2 三个级别 0 最高
}
this.initChess();
this.scheduleOnce(this.startTouzi, 2.1);
this.initTouzi();
this.scheduleOnce(this.startTouzi, 1.1);
}
onSpeakScueess() {
//执行后续的动作。
......
import pg from '"./tool/pg"'
// [
// {
// "id": 1,
......
......@@ -10,7 +10,7 @@ import pg from "./tool/pg";
const { ccclass, property } = cc._decorator;
@ccclass
export default class NewClass extends cc.Component {
export default class SpeakRecord extends cc.Component {
@property(cc.Label)
label: cc.Label = null;
......@@ -19,26 +19,35 @@ export default class NewClass extends cc.Component {
text: string = 'hello';
// LIFE-CYCLE CALLBACKS:
private bg: cc.Node;
private text_tip: cc.Node;
private btn_audio_start: cc.Node;
private btn_audio_stop: cc.Node;
private btn_audio_clock: cc.Node;
private speak_ske: cc.Node;
private bg_goodjob: cc.Node;
private bg_tryagain: cc.Node;
private bg_comeon: cc.Node;
onLoad() {
this.bg = pg.view.find(this, "bg");
this.text_tip = pg.view.find(this, "text_tip");
this.btn_audio_start = pg.view.find(this, "btn_audio_start");
this.btn_audio_stop = pg.view.find(this, "btn_audio_stop");
this.btn_audio_clock = pg.view.find(this, "btn_audio_clock");
this.speak_ske = pg.view.find(this, "speak_ske");
this.bg_goodjob = pg.view.find(this, "bg_goodjob");
this.bg_tryagain = pg.view.find(this, "bg_tryagain");
this.bg_comeon = pg.view.find(this, "bg_comeon");
pg.view.visible(this.btn_audio_clock, false);
pg.view.visible(this.bg, false);
pg.view.visible(this.text_tip, false);
pg.view.visible(this.btn_audio_start, false);
pg.view.visible(this.btn_audio_stop, false);
pg.view.visible(this.speak_ske, false);
pg.view.visible(this.bg_goodjob, false);
pg.view.visible(this.bg_tryagain, false);
pg.view.visible(this.bg_comeon, false);
pg.view.touchOn(this.btn_audio_start, this.onTouchStart, this);
pg.view.touchOn(this.btn_audio_stop, this.onTouchStop, this);
......@@ -58,35 +67,95 @@ export default class NewClass extends cc.Component {
}
private tryCount: number;
private val: string;
private data: any;
open(cell) {
if (cell) {
this.data = cell;
this.val = cell.value;
}
pg.view.visible(this.bg, true);
pg.view.visible(this.text_tip, true);
pg.view.visible(this.btn_audio_start, true);
pg.view.visible(this.btn_audio_stop, false);
pg.view.visible(this.speak_ske, true);
pg.view.visible(this.bg_goodjob, false);
pg.view.visible(this.bg_tryagain, false);
pg.view.visible(this.bg_comeon, false);
this.updateBoard();
}
close() {
pg.view.visible(this.bg, false);
pg.view.visible(this.text_tip, false);
pg.view.visible(this.btn_audio_start, false);
pg.view.visible(this.btn_audio_stop, false);
pg.view.visible(this.speak_ske, false);
pg.view.visible(this.bg_goodjob, false);
pg.view.visible(this.bg_tryagain, false);
pg.view.visible(this.bg_comeon, false);
}
updateBoard() {
let text = pg.view.find(this.text_tip, "text");
let img = pg.view.find(this.text_tip, "img");
let ext = this.data.ext;
pg.view.setNetImg(img, ext.img, { w: 550, h: 270 })
pg.view.setString(text, ext.text);
this.onTouchVoice();
pg.view.touchOn(img, this.onTouchVoice, this);
}
private audioId;
onTouchVoice() {
this.audioId = null;
if (this.data.ext.audio) {
pg.audio.playAudioByUrl(this.data.ext.audio).then(audioId => {
this.audioId = audioId;
})
}
}
private time: number;
openClock() {
pg.view.visible(this.btn_audio_clock, true);
this.unschedule(this.updateClock);
this.time = Number(this.data.ext.time) || 20;
this.schedule(this.updateClock, 0.03);
}
updateClock() {
this.time -= 0.03;
let time_0 = pg.view.find(this.btn_audio_clock, 'time_0');
let time_1 = pg.view.find(this.btn_audio_clock, 'time_1');
let showTime = Math.ceil(this.time);
pg.view.setString(time_0, showTime);
pg.view.setString(time_1, showTime);
time_0.active = showTime > 5;
time_1.active = showTime <= 5;
if (showTime == 0) {
this.unschedule(this.updateClock);
this.scheduleOnce(() => {
pg.view.visible(this.btn_audio_clock, false);
this.onTouchStop();
}, .2)
}
}
closeClock() {
pg.view.visible(this.btn_audio_clock, false);
this.unschedule(this.updateClock);
}
onTouchStart() {
if (this.audioId) {
cc.audioEngine.stopEffect(this.audioId);
this.audioId = null;
}
pg.view.playDBAnimation(this.speak_ske, "newAnimation", 0);
pg.view.visible(this.btn_audio_start, false);
pg.view.visible(this.btn_audio_stop, true);
this.openClock();
let win: any = window;
win.courseware && win.courseware.startTest(this.val); //开始录音
}
onTouchStop() {
this.closeClock();
pg.view.visible(this.btn_audio_start, false);
pg.view.visible(this.btn_audio_stop, false);
let win: any = window;
......@@ -103,7 +172,7 @@ export default class NewClass extends cc.Component {
"fluency": 60,
"rhythm": 90,
"kernel_version": "5.2.4",
"overall": 75,
"overall": 35,//75
"integrity": 100,
"duration": "6.779",
"rear_tone": "fall",
......@@ -131,7 +200,8 @@ export default class NewClass extends cc.Component {
pg.view.visible(this.speak_ske, false);
pg.view.visible(this.bg_goodjob, false);
pg.view.visible(this.bg_tryagain, false);
if (score > 50) {
pg.view.visible(this.bg_comeon, false);
if (score > 40) {
pg.hw.playLocalAudio("goodjob");
pg.view.visible(this.bg_goodjob, true);
this.scheduleOnce(() => {
......@@ -140,8 +210,8 @@ export default class NewClass extends cc.Component {
}, 2.5)
} else {
if (this.tryCount >= 1) {
pg.view.visible(this.bg_tryagain, true);
pg.hw.playLocalAudio("tryagain");
pg.view.visible(this.bg_comeon, true);
pg.hw.playLocalAudio("comeon");
this.tryCount++;
//需要处理提供两次机会。重置一次到open状态
this.scheduleOnce(() => {
......
import pg from "./tool/pg";
const { ccclass, property } = cc._decorator;
@ccclass
export default class NewClass extends cc.Component {
@property(cc.Label)
label: cc.Label = null;
@property
text: string = 'hello';
// LIFE-CYCLE CALLBACKS:
onLoad() {
this.initView();
let panel_gray = pg.view.find(this, "panel_gray");
let btn_start = pg.view.find(this, "btn_start");
let btn_restart = pg.view.find(this, "btn_restart");
let bg_vs = pg.view.find(this, "bg_vs");
pg.view.touchOn(btn_start, this.onTouchStart, this);
pg.view.touchOn(btn_restart, this.onTouchRestart, this);
pg.event.on("game_over", () => {
this.onGameOver();
})
}
protected onDestroy(): void {
pg.event.off("game_over");
cc.Tween.stopAll();
this.unscheduleAllCallbacks();
}
initView() {
let panel_gray = pg.view.find(this, "panel_gray");
let btn_start = pg.view.find(this, "btn_start");
let btn_restart = pg.view.find(this, "btn_restart");
let bg_vs = pg.view.find(this, "bg_vs");
pg.view.visible(panel_gray, true);
pg.view.visible(btn_start, true);
}
onTouchStart() {
pg.hw.playLocalAudio("vs");
let panel_gray = pg.view.find(this, "panel_gray");
let btn_start = pg.view.find(this, "btn_start");
let btn_restart = pg.view.find(this, "btn_restart");
let bg_vs = pg.view.find(this, "bg_vs");
pg.view.visible(panel_gray, true);
pg.view.visible(btn_start, false);
pg.view.visible(bg_vs, true);
if (bg_vs) {
bg_vs.y = 1000;
cc.tween(bg_vs).to(0.2, { y: 0 }).start();
}
pg.event.emit("game_start");
this.scheduleOnce(() => {
pg.view.visible(bg_vs, false);
pg.view.visible(panel_gray, false);
}, 2)
}
onTouchRestart() {
pg.hw.playLocalAudio("vs");
let panel_gray = pg.view.find(this, "panel_gray");
let btn_start = pg.view.find(this, "btn_start");
let btn_restart = pg.view.find(this, "btn_restart");
let bg_vs = pg.view.find(this, "bg_vs");
pg.view.visible(panel_gray, true);
pg.view.visible(btn_start, false);
pg.view.visible(btn_restart, false);
pg.view.visible(bg_vs, true);
this.scheduleOnce(() => {
pg.view.visible(bg_vs, false);
pg.view.visible(panel_gray, false);
pg.view.visible(btn_restart, false);
pg.event.emit("game_start");
}, 2)
}
onGameOver() {
let panel_gray = pg.view.find(this, "panel_gray");
let btn_restart = pg.view.find(this, "btn_restart");
let bg_vs = pg.view.find(this, "bg_vs");
pg.view.visible(panel_gray, true);
pg.view.visible(btn_restart, true);
}
update(dt) { }
}
{
"ver": "1.0.8",
"uuid": "13dcba6f-c876-4e1c-a8f5-b3a0547ccb11",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
......@@ -72,6 +72,7 @@ export default class Game {
public singleGame: boolean;
public question: { text, audio };
public title: string;
public map: any;
public init(data) {
this.singleGame = !data.onlineFlg;
this.question = { text: data.questionText, audio: data.questionTextAudio };
......@@ -80,6 +81,7 @@ export default class Game {
this.lists = [];
this.bgm = data.bgAudio;
this.data = data.options;
this.map = map
}
public start: boolean;
public page: number;
......@@ -93,11 +95,29 @@ export default class Game {
let data = this.data[i];
this.lists.push(new Item(data, i + 1));
}
let arr = this.map.filter(m => {
if (m.type === '1') {
m.value = null;
return true;
}
return false;
})
while (arr.length > 0) {
this.lists.forEach((item) => {
if (arr.length == 0) return;
let i = Math.floor(Math.random() * arr.length);
let datas = arr.splice(i, 1)
datas[0].value = item.text;
datas[0].ext = item;
})
}
}
mapFull() {
}
getMap() {
return map;
// 针对map进行一次加工
return this.map;
}
}
\ No newline at end of file
export const defaultData = { "onlineFlg": false, "title": "急速前进", "questionText": "亲爱的小玩家,在本次的游戏中,你将和其他玩家进行PK。每人拥有一颗棋子,放置在地图起点位置。两位玩家轮流扔骰子,根据骰子的点数,在地图上移动相应的步数,每到达一个地点,将要完成相应的任务。任务完成,棋子可以停留,否则,棋子需要退回上一个地点。最后,最先到达终点的玩家,获得胜利。\n 游戏结束,根据你的表现,你将获得相应的能量石奖励!开始挑战吧!", "questionTextAudio": "http://staging-teach.cdn.ireadabc.com/e976f22632fea6f542ea3cf611e43ff9_l.mp3", "options": [{ "image": "http://staging-teach.cdn.ireadabc.com/d74029cc48f4312ed2df9e92fa3059cf.png", "audio": "http://staging-teach.cdn.ireadabc.com/227c25a67e1398026bd6185bf9a6e87c_l.mp3", "audioName": "ta.mp3", "text": "come", "time": "10", "tip": "this is tip " }, { "image": "http://staging-teach.cdn.ireadabc.com/d267295e48026fb74bcf2424cd626c77.png", "audio": "http://staging-teach.cdn.ireadabc.com/0913981cdeb2c6bc785de1054e80a500_l.mp3", "audioName": "co.mp3", "text": "good", "time": "10", "tip": "" }, { "image": "http://staging-teach.cdn.ireadabc.com/37071997ef50fd979843c9719c26176f.png", "audio": "", "audioName": "", "text": "player", "time": "20", "tip": "player" }, { "image": "http://staging-teach.cdn.ireadabc.com/fecbb8471427a38d68486ae1bbc6c25c.png", "audio": "", "audioName": "", "text": "robot", "time": "15", "tip": "" }], "bgAudio": "", "audioBgName": "", "audioName": "急速前进" }
\ No newline at end of file
export const defaultData = {
"onlineFlg": false,
"title": "急速前进",
"questionText": "亲爱的小玩家,在本次的游戏中,你将和其他玩家进行PK。每人拥有一颗棋子,放置在地图起点位置。两位玩家轮流扔骰子,根据骰子的点数,在地图上移动相应的步数,每到达一个地点,将要完成相应的任务。任务完成,棋子可以停留,否则,棋子需要退回上一个地点。最后,最先到达终点的玩家,获得胜利。\n 游戏结束,根据你的表现,你将获得相应的能量石奖励!开始挑战吧!", "questionTextAudio": "http://staging-teach.cdn.ireadabc.com/e976f22632fea6f542ea3cf611e43ff9_l.mp3",
"options": [{
"image": "http://staging-teach.cdn.ireadabc.com/d74029cc48f4312ed2df9e92fa3059cf.png", "audio": "http://staging-teach.cdn.ireadabc.com/227c25a67e1398026bd6185bf9a6e87c_l.mp3", "audioName": "ta.mp3", "text": "come", "time": "10", "tip": "this is tip "
},
{
"image": "http://staging-teach.cdn.ireadabc.com/d267295e48026fb74bcf2424cd626c77.png", "audio": "http://staging-teach.cdn.ireadabc.com/0913981cdeb2c6bc785de1054e80a500_l.mp3", "audioName": "co.mp3", "text": "good", "time": "10", "tip": ""
},
{
"image": "http://staging-teach.cdn.ireadabc.com/37071997ef50fd979843c9719c26176f.png", "audio": "http://staging-teach.cdn.ireadabc.com/227c25a67e1398026bd6185bf9a6e87c_l.mp3", "audioName": "", "text": "player", "time": "20", "tip": "player"
}
, {
"image": "http://staging-teach.cdn.ireadabc.com/fecbb8471427a38d68486ae1bbc6c25c.png", "audio": "http://staging-teach.cdn.ireadabc.com/227c25a67e1398026bd6185bf9a6e87c_l.mp3", "audioName": "", "text": "robot", "time": "15", "tip": ""
}],
"bgAudio": "", "audioBgName": "", "audioName": "急速前进"
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment