/// <summary> /// Get a grid's value based on the given pattern and coord /// </summary> /// <param name="refPattern"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public int GetGrid(SinglePattern refPattern, int x, int y) { int yIndex = refPattern.height - y - 1; // Get the y index for the grid for the given coord int index = x + refPattern.width * yIndex; // Get the index for the coord return(refPattern.pattern[index]); }
public void generate(GameObject scene) { float target = Random.Range(0, totalPossibility); float p = 0.0f; SinglePattern targPattern = null; string patternName = ""; do { foreach (KeyValuePair <string, SinglePattern> pair in patterns) { p += pair.Value.prob; if (p >= target) { targPattern = pair.Value; patternName = pair.Key; break; } } } while(lastGenPattern != null && !lastGenPattern.acceptsAsNextPattern(patternName)); lastGenPattern = targPattern.pattern; generate(scene, targPattern.pattern); //Debug.Log("Generate " + patternName); }
/// <summary>Snippet for SinglePatternMethodAsync</summary> public async Task SinglePatternMethodRequestObjectAsync() { // Snippet: SinglePatternMethodAsync(SinglePattern, CallSettings) // Additional: SinglePatternMethodAsync(SinglePattern, CancellationToken) // Create client ResourceNamesClient resourceNamesClient = await ResourceNamesClient.CreateAsync(); // Initialize request argument(s) SinglePattern request = new SinglePattern { RealNameAsSinglePatternName = SinglePatternName.FromItem("[ITEM_ID]"), RefAsSinglePatternName = SinglePatternName.FromItem("[ITEM_ID]"), RepeatedRefAsSinglePatternNames = { SinglePatternName.FromItem("[ITEM_ID]"), }, ValueRefAsSinglePatternName = SinglePatternName.FromItem("[ITEM_ID]"), RepeatedValueRefAsSinglePatternNames = { SinglePatternName.FromItem("[ITEM_ID]"), }, }; // Make the request Response response = await resourceNamesClient.SinglePatternMethodAsync(request); // End snippet }
/// <summary> /// Update the game's grids base on the given pattern /// </summary> /// <param name="newPattern"></param> /// <param name="currentPattern"></param> public IEnumerator UpdateGridsDisplay(SinglePattern newPattern, SinglePattern currentPattern) { for (int i = 0; i < currentGridDisplays.Count; i++) { currentGridDisplays[i].GetComponent <Tile>().StateChange(newPattern.pattern[i]); //currentGridDisplays[i].GetComponent<Tile>().currState = newPattern.pattern[i]; //UpdateTile(currentGridDisplays[i], newPattern.pattern[i]); } yield return(animationWait); canPlayerMove = false; }
public static SinglePattern GetInstance() { if (singlePattern == null) { lock (Lock) { if (singlePattern == null) { singlePattern = new SinglePattern(); } } } return singlePattern ; }
/// <summary>Snippet for SinglePatternMethod</summary> /// <remarks> /// This snippet has been automatically generated for illustrative purposes only. /// It may require modifications to work in your environment. /// </remarks> public void SinglePatternMethodRequestObject() { // Create client ResourceNamesClient resourceNamesClient = ResourceNamesClient.Create(); // Initialize request argument(s) SinglePattern request = new SinglePattern { RealNameAsSinglePatternName = SinglePatternName.FromItem("[ITEM_ID]"), RefAsSinglePatternName = SinglePatternName.FromItem("[ITEM_ID]"), RepeatedRefAsSinglePatternNames = { SinglePatternName.FromItem("[ITEM_ID]"), }, ValueRefAsSinglePatternName = SinglePatternName.FromItem("[ITEM_ID]"), RepeatedValueRefAsSinglePatternNames = { SinglePatternName.FromItem("[ITEM_ID]"), }, }; // Make the request Response response = resourceNamesClient.SinglePatternMethod(request); }
public void CreateLevelPatternStorages() { // Valid check if (width <= 0 || height <= 0) { print("Invalid level size"); return; } // Create pattern storages for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { GameObject newStorage = new GameObject(x + ", " + y); SinglePattern newPattern = newStorage.AddComponent <SinglePattern>(); newPattern.width = width; newPattern.height = height; newStorage.transform.parent = transform; patterns.Add(newPattern); } } }
/// <summary> /// When player moves in a direction /// </summary> /// <param name="xDir"></param> /// <param name="yDir"></param> /// <returns></returns> public SinglePattern PlayerMoved(int xDir, int yDir) { // Store last position coord if (xDir != 0 || yDir != 0) { moveHistory.Add(new Vector2(playerXcoord, playerYcoord)); } // Get player new position playerXcoord += xDir; if (playerXcoord < 0) { playerXcoord = currentLevel.width - 1; } if (playerXcoord == currentLevel.width) { playerXcoord = 0; } playerYcoord += yDir; if (playerYcoord < 0) { playerYcoord = currentLevel.height - 1; } if (playerYcoord == currentLevel.height) { playerYcoord = 0; } // Proceed result base on the grid color and coord the player moved to SinglePattern previousPattern = currentPattern; SinglePattern nextPattern = null; // If this is the start move from a new level if (xDir == 0 && yDir == 0) { previousPattern = GetPattern(playerXcoord, playerYcoord); nextPattern = GetPattern(playerXcoord, playerYcoord); } else { // Play move sound effect AudioManager.instance.PlaySFX(AudioManager.instance.playerMoveSFX); switch (GetGrid(currentPattern, playerXcoord, playerYcoord)) { // White grid case 0: nextPattern = GetPattern(playerXcoord, playerYcoord); break; // Gray grid case 1: nextPattern = currentPattern; break; } } currentPattern = nextPattern; // Play the pattern update animation (can have animation even if the pattern didn't change) canPlayerMove = true; StartCoroutine(UpdateGridsDisplay(currentPattern, previousPattern)); return(nextPattern); }
public Env ExtendValue <T>(Pattern pattern, T argument, Netlist netlist, string source, Style style, int s) where T : Value // bounded polymorphism :) { Env env = this; if (pattern is SinglePattern) { SinglePattern parameter = pattern as SinglePattern; env = new ValueEnv(parameter.name, parameter.type, argument, netlist, env); } else if (pattern is ListPattern) { List <Pattern> subPatterns = (pattern as ListPattern).list.parameters; if (!(argument is ListValue <T>)) { throw new Error("A list pattern is bound to a non-list value: '" + source + "'"); } List <T> subArguments = (argument as ListValue <T>).elements; env = env.ExtendValues(subPatterns, subArguments, netlist, source, style, s + 1); } else if (pattern is HeadConsPattern) { List <Pattern> headPatterns = (pattern as HeadConsPattern).list.parameters; Pattern singlePattern = (pattern as HeadConsPattern).single; if (!(argument is ListValue <T>)) { throw new Error("A list pattern is bound to a non-list value: '" + source + "'"); } List <T> subArguments = (argument as ListValue <T>).elements; if (headPatterns.Count > subArguments.Count) { throw new Error("In a list pattern variables exceed values: '" + source + "'"); } List <T> headArguments = subArguments.Take(headPatterns.Count).ToList(); List <T> tailArguments = subArguments.Skip(headPatterns.Count).ToList(); env = env.ExtendValues(headPatterns, headArguments, netlist, source, style, s + 1); env = env.ExtendValue(singlePattern, new ListValue <T>(tailArguments), netlist, source, style, s + 1); } else if (pattern is TailConsPattern) { Pattern singlePattern = (pattern as TailConsPattern).single; List <Pattern> tailPatterns = (pattern as TailConsPattern).list.parameters; if (!(argument is ListValue <T>)) { throw new Error("A list pattern is bound to a non-list value: '" + source + "'"); } List <T> subArguments = (argument as ListValue <T>).elements; if (tailPatterns.Count > subArguments.Count) { throw new Error("In a list pattern variables exceed values: '" + source + "'"); } List <T> headArguments = subArguments.Take(subArguments.Count - tailPatterns.Count).ToList(); List <T> tailArguments = subArguments.Skip(subArguments.Count - tailPatterns.Count).ToList(); env = env.ExtendValue(singlePattern, new ListValue <T>(headArguments), netlist, source, style, s + 1); env = env.ExtendValues(tailPatterns, tailArguments, netlist, source, style, s + 1); } else { throw new Error("Pattern"); } return(env); }