C# spiel - mit mauszeiger durch blöcke

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • C# spiel - mit mauszeiger durch blöcke

    also, ich hoffe ich bin hier nicht falsch, den ich hab kein forum für C# endeckt...

    also mein problem ist:
    ich hab microsoft visual c# express 2008

    ich hab ein fenster(form) und da hab ich zwei bilder, ein label(text), ein button.
    es ist ein spiel, man muss mit dem mauszeiger durch die blöcke durfinden.(man darf nich block berühren)
    wen man einen block berührt,wird das button grau (mann kan es nicht drücken),um es wieder drücken zu können muss man wieder den label(text=start) berühren.ziel ist das man button drückt!

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace WindowsFormsApplication1
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void Form1_Load(object sender, EventArgs e)
    18. {
    19. }
    20. private void pictureBox2_mousehover(object sender, EventArgs e)
    21. {
    22. }
    23. private void pictureBox1_mousehover(object sender, EventArgs e)
    24. {
    25. <--------------------------------------------------------------------------------------------------hier solll das button grau(undrückbar) werden
    26. }
    27. private void label1_mousehover(object sender, EventArgs e)
    28. {
    29. <----------------------------------------------------------------------------------------------------------hier soll das button normal werden
    30. }
    31. }
    32. }
    Alles anzeigen


    ich glaub das muss irgendwie mit dem befehl "enabled = false" bzw. "enabled =true" gehen


    vielen dank schonmal im voraus...
    Michael
  • hallo,

    ich muss gestehen ich hab nicht so ganz verstanden was du machen willst!
    aber hier mal das zum enable bzw. disable:

    um einen button zu enablen musst du die entsprechende property des buttons auf enable = true stezen. das ist recht einfach:

    Quellcode

    1. // enable:
    2. button.Enabled = true;
    3. // disable:
    4. button.Enabled = false;


    button ist der name den du für den button vergeben hast.

    um auf dein problem einzugehen:
    (ich hoffe ich habs richtig verstanden)
    wenn du ne "block" berührst (siehe mousover event) dann setzt du einfach deinen button auf enabled = false.
    defaultmäsig kannst du deinen button auch klick bar bzw. nicht klickbar machen indem du die property im entsprechendem editor fenster auf true oder false setzt!

    hoffe ich konnte dir helfen.

    thx, truespin
  • thx, das hat ich schon, blos hab false mit true verwechselt, trotzdem danke,
    aber jetzt hab ich nen anderes problem,
    ich hab auf youtube (tutorial) den begriff mousehover gesehen!
    z.B.:

    Quellcode

    1. button1_click

    das geht ja, aber da müsste doch auch das gehen oder?

    Quellcode

    1. button1_mousehover

    !Das geht aber net! da sagt er fehler in "Form1.designer.cs" !

    da steht dan das:

    Quellcode

    1. this.pictureBox2.Click += new System.EventHandler(this.pictureBox2_Click);

    wen ich hinschreib:

    Quellcode

    1. this.pictureBox2.mousehover += new System.EventHandler(this.pictureBox2_mousehover);

    gehts immer noch nicht!!!
  • hallo,

    es ist ganz sinnvoll die events die von der form geschmissen werden auch im formdesigner auszuwählen.
    das geht über das event menü. dazu wählst du ein steuerelement aus (z.b. nen button) undklickst über dem eigenschaftsfenster des steuerelements auf den blitz. in der liste kannst du dann auswählen was für ein event du gerne hättest. der quellcode wird dir dann auch angelegt.

    thx, truespin


    edit: c# ist case sensitive... heißt groß und kleinschreibung macht sehr wohl einen unterschied wie du gemerkt hast ;)
  • ja, ich bin C# anfänger, i hab C# nur genommen weil das gleiche spiel in basic nicht ging, weil wenn ich auf einen block gegangen bin,
    der button erst 5 sekunden später undrückbar gemacht worden ist.

    Das hab ich jetzt in C# nach gebaut, und immer noch:
    ich fahre auf block, 3 sekunden später, erst button undrückbar!

    was mach ich falsch das die programmier sprachen, so lahm sind?????
  • Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace WindowsFormsApplication1
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void Form1_Load(object sender, EventArgs e)
    18. {
    19. }
    20. private void pictureBox2_MouseHover(object sender, EventArgs e)
    21. {
    22. button1.Enabled = false;
    23. }
    24. private void pictureBox1_MouseHover(object sender, EventArgs e)
    25. {
    26. button1.Enabled = false;
    27. }
    28. private void label1_MouseHover(object sender, EventArgs e)
    29. {
    30. button1.Enabled = true;
    31. }
    32. private void button1_Click(object sender, EventArgs e)
    33. {
    34. }
    35. }
    36. }
    Alles anzeigen
  • hallo,

    du verwendest das MouseHover event. sie dir doch mal an wann dieses event ausgelöst wird:
    "Tritt auf, wenn die Maus innerhalb eines Steuerelements für eine bestimmten Zeitraum nicht bewegt wird."

    überleg dir nochmal was du tun willst! ich schätze du willst sowas: MoseMove
    "Tritt auf, wenn der Mauszeiger über die Komponente bewegt wird."

    all diese infos findest du im formdesigner. öffne die entwurfsansicht und klicke auf den kleinen blitz um die events festzulegen!

    thx, truespin
  • hallo

    ich weiß ja nicht ob du es jetzt geschafft hast oder nicht, weil das thema auf "erledigt" gesetzt wurde... aber hier die zeile code

    Quellcode

    1. private void button2_MouseMove(object sender, MouseEventArgs e)
    2. {
    3. button1.Enabled = false;
    4. }


    du musst einfach für das steuerelement das du nicht berühren sollst ein mousemove event vergeben. wenn du drüber fährst musst du den butten disablen (enabled = false).


    thx, truespin
  • ging net, deswegen hab ich da was geändert:

    Quellcode

    1. namespace WindowsFormsApplication1
    2. {
    3. partial class Form1
    4. {
    5. /// <summary>
    6. /// Erforderliche Designervariable.
    7. /// </summary>
    8. private System.ComponentModel.IContainer components = null;
    9. /// <summary>
    10. /// Verwendete Ressourcen bereinigen.
    11. /// </summary>
    12. /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
    13. protected override void Dispose(bool disposing)
    14. {
    15. if (disposing && (components != null))
    16. {
    17. components.Dispose();
    18. }
    19. base.Dispose(disposing);
    20. }
    21. #region Vom Windows Form-Designer generierter Code
    22. /// <summary>
    23. /// Erforderliche Methode für die Designerunterstützung.
    24. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    25. /// </summary>
    26. private void InitializeComponent()
    27. {
    28. System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
    29. this.pictureBox1 = new System.Windows.Forms.PictureBox();
    30. this.pictureBox2 = new System.Windows.Forms.PictureBox();
    31. this.label1 = new System.Windows.Forms.Label();
    32. this.button1 = new System.Windows.Forms.Button();
    33. ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
    34. ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
    35. this.SuspendLayout();
    36. //
    37. // pictureBox1
    38. //
    39. this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
    40. this.pictureBox1.Location = new System.Drawing.Point(0, 42);
    41. this.pictureBox1.Name = "pictureBox1";
    42. this.pictureBox1.Size = new System.Drawing.Size(250, 78);
    43. this.pictureBox1.TabIndex = 0;
    44. this.pictureBox1.TabStop = false;
    45. this.pictureBox1.MouseHover += new System.EventHandler(this.pictureBox1_MouseHover);
    46. //
    47. // pictureBox2
    48. //
    49. this.pictureBox2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox2.BackgroundImage")));
    50. this.pictureBox2.Location = new System.Drawing.Point(42, 142);
    51. this.pictureBox2.Name = "pictureBox2";
    52. this.pictureBox2.Size = new System.Drawing.Size(250, 78);
    53. this.pictureBox2.TabIndex = 1;
    54. this.pictureBox2.TabStop = false;
    55. this.pictureBox2.MouseMove += new System.EventHandler(this.pictureBox2_MouseMove);
    56. //
    57. // label1
    58. //
    59. this.label1.AutoSize = true;
    60. this.label1.Location = new System.Drawing.Point(8, 10);
    61. this.label1.Name = "label1";
    62. this.label1.Size = new System.Drawing.Size(29, 13);
    63. this.label1.TabIndex = 2;
    64. this.label1.Text = "Start";
    65. this.label1.MouseHover += new System.EventHandler(this.label1_MouseHover);
    66. //
    67. // button1
    68. //
    69. this.button1.Location = new System.Drawing.Point(129, 233);
    70. this.button1.Name = "button1";
    71. this.button1.Size = new System.Drawing.Size(142, 26);
    72. this.button1.TabIndex = 3;
    73. this.button1.Text = "Ziel";
    74. this.button1.UseVisualStyleBackColor = true;
    75. this.button1.Click += new System.EventHandler(this.button1_Click);
    76. //
    77. // Form1
    78. //
    79. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    80. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    81. this.ClientSize = new System.Drawing.Size(292, 266);
    82. this.Controls.Add(this.button1);
    83. this.Controls.Add(this.label1);
    84. this.Controls.Add(this.pictureBox2);
    85. this.Controls.Add(this.pictureBox1);
    86. this.Name = "Form1";
    87. this.Text = "Form1";
    88. this.Load += new System.EventHandler(this.Form1_Load);
    89. ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
    90. ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
    91. this.ResumeLayout(false);
    92. this.PerformLayout();
    93. }
    94. #endregion
    95. private System.Windows.Forms.PictureBox pictureBox1;
    96. private System.Windows.Forms.PictureBox pictureBox2;
    97. private System.Windows.Forms.Label label1;
    98. private System.Windows.Forms.Button button1;
    99. }
    100. }
    Alles anzeigen

    und jetzt geht gar nichts mehr!!!!!!!!!!!!!!!!!!!!!!!!