|
I don't know as I am not familiar with your entire code base.
However it does not match well with the code shown in your original post.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
You're right; I changed some of the code. I'm thinking that on mousedown event, somewhere I would flip the backing cards over when the user presses the mouse down on the card. How would I do that?
Here it is:
Option Explicit
Public Sub FormLoad()
End Sub
Private Sub Exit_Click()
MsgBox ("Thank you for playing. Good Bye.")
End
End Sub
Private Sub Start_Click()
Image2.Visible = False
Dim Selected As Boolean
Dim arrDeck(52)
Dim Cardcount As Integer
Dim Counter As Integer
Dim Index As Integer
Do While Cardcount <= 52
arrDeck(Cardcount) = Cardcount
Cardcount = Cardcount + 1
Loop
Dim swap As Integer
Dim posn1 As Integer
Dim posn2 As Integer
Randomize
For swap = 0 To 50
' Get two random positions
posn1 = Int(52 * Rnd)
posn2 = Int(52 * Rnd)
' Swap pictures at these positions
If (posn1 <> posn2) Then
KingH(0).Picture = Image1(posn1).Picture
KingH(0).Tag = Image1(posn1).Tag
Image1(posn1).Picture = Image1(posn2).Picture
Image1(posn1).Tag = Image1(posn2).Tag
Image1(posn2).Picture = KingH(0).Picture
Image1(posn2).Tag = KingH(0).Tag
End If
Next swap
Start_Game.Refresh
For Counter = 0 To 50
Counter = Counter + 1
Image1(Counter).Picture = LoadPicture("C:\Program1\Back.gif")
Next Counter
Counter = 0
For Counter = 0 To 51
Image1(Counter).Visible = True
Next Counter
End Sub
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Image1(Index).Drag vbBeginDrag
End Sub
Private Sub Hearts_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
If Hearts(Index).Tag = Source.Tag Then
Hearts(Index).Picture = Source.Picture
Source.Picture = Image1(Index).Picture
Source.Visible = False
Source.Drag vbEndDrag
MsgBox ("OK")
Else
Image1(Index).Picture = Image1(Index).Picture
Source.Drag vbCancel
MsgBox ("No Way Shirley")
End If
End Sub
|
|
|
|
|
Hi,
I have several comments:
1.
For Counter = 0 To 50
Counter = Counter + 1
Image1(Counter).Picture = LoadPicture("C:\Program1\Back.gif")
Next Counter
you are incrementing Counter twice: once explicitly, once implicitly in the For statement.
If that is what you want, you should adapt the for statement and add "Step 2" for clarity.
And you are loading that image from file over and over.
2.
I would keep the state of the game in my own data structures, independent of the GUI; I might choose to have an integer array storing the card numbers (0-51), a bool array storing a front/back flag, etc. Then perform the game rules on that data, and when something changes update the GUI.
So e.g. the initial card shuffle would occur in data arrays, not in PictureBoxes.
3.
I would keep all the card images in a single Image array, and load that once at app start. You seem to get all cards loaded in the PictureBoxes through the Designer (that is a lot of unnecessary work, such things are much easier in code).
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
Thanks for the expert comments:
Questions:
1. I would like to keep what I have done in design view instead of writing more code to load those pics. I have Dimmed an array at the beginning to create the card deck; I cannot redundantly load the image array twice; the compiler won't let me; says it's already there.
2. In response to your #1, I wanted every other card to have the back.gif, so in essence it is flipped over. Am I actually loading the same image twice with my code? I thought using the For statement would at least start the counting from 0-51, but I wanted the counter to change the back of every other card. Your comment about boolean flags makes sense. I'm not asking you to write my code, but this isn't for a school assignment; it is a birthday present to my Mom, so help on boolean code would be very much appreciated. Hence, perhaps I can have a face up as a boolean, and a face down. How and where would I implement that; at loadform?
Much appreciation in advance.
|
|
|
|
|
I don't understand your game nor your code, however I am convinced I would program card games quite differently, as I explained. Obviously you are entitled to your way of doing it, I won't be able to help you much, I wish you success.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
Thanks, but it works so far....maybe I did too much in design view.
|
|
|
|
|
Hi,
I have a comma delimited text file. Below that
IM,ABC001,D,0,@;ABC;Images\00\00\ABC001.tif;2
IM,ABC002,,0,@;ABC;Images\00\00\ABC002.tif;2
IM,ABC003,D,0,@;ABC;Images\00\00\ABC003.tif;2
IM,ABC004,D,0,@;ABC;Images\00\00\ABC004.tif;2
I need the output as below.(In another Notepad)
"ABC001","ABC002"
"ABC003","ABC003"
"ABC004","ABC004"
It is read based on the ,D, in the input notepad. After read the ,D, we will pick the "ABC001" from after "IM". then again read the 'D' then we pick the "ABC002" from previous line. Are you not understand please see the input and output.
Please help me..
By
Gopi A.
Please help
|
|
|
|
|
Where are you stuck? What have you tried?
Seems straightforward and relatively easy.
|
|
|
|
|
They are called "text files", not "Notepads". Notepad is an application that edits text files.
Why is this so hard? It's simple string manipulation. Read the line into a String variable, split it on the "," character, then look at the 2nd element to get your name. Then look at the thrid element. If it's got a "D", then you output your name appropriately.
|
|
|
|
|
Hi Dave,
I am using this code.
My input is in notepad like below
Input:
IM,ABC001,D,0,@Box1;Images\00\00\ABC001.tif;2
IM,ABC002,,0,@Box1;Images\00\00\ABC002.tif;2
IM,ABC003,D,0,@Box1;Images\00\00\ABC003.tif;2
IM,ABC004,D,0,@Box1;Images\00\00\ABC004.tif;2
IM,ABC005,,0,@Box1;Images\00\00\ABC005.tif;2
IM,ABC006,D,0,@Box1;Images\00\00\ABC006.tif;2
output:
BegBate EndBate
ABC001 ABC002
ABC003 ABC003
ABC004 ABC005
ABC006 ABC006
After use the below code i was got only the BegBate. How I will got the Endbate also like above format?.
MY Code:
Using myreader As New Microsoft.VisualBasic.FileIO.TextFieldParser("c:\ipro.txt")
myreader.TextFieldType = FileIO.FieldType.Delimited
myreader.SetDelimiters(",")
'cr=currentrow
'cf=currentfield
Dim cr As String()
Dim count1 As Integer
While Not myreader.EndOfData
Try
cr = myreader.ReadFields()
For count1 = 4 To cr.Length - 1
If cr(2).Contains("D") Or cr(2).Contains("C") = True Then
Dim sw As StreamWriter
sw = New StreamWriter("c:\test2.txt", True, Encoding.Unicode)
sw.WriteLine(cr(1))
sw.Close()
End If
Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
End Try
End While
End Using
MsgBox("completed")
Please do the needful
Very Thanks to all,
Please Help..
By
Gopi A.
|
|
|
|
|
Member 4027617 wrote: If cr(2).Contains("D") Or cr(2).Contains("C") = True Then
First, this line is incorrectly written. It just so happens that the logic works in this case. This line SHOULD read:
If cr(2).Contains("D") = True Or cr(2).Contains("C") = True Then
or
If cr(2).Contains("D") Or cr(2).Contains("C") Then
Be consistent in your code.
Now that have a case where the line contains either D or C in that field, what are you doing if it doesn't? Hint: currently, you aren't doing anything. What do you have to do if the line doesn't contain your flag characters?
|
|
|
|
|
Well, you should look up the Split method.
Like this site: Parse a string using the Split method
And also, of you searched google for "Read a comma delimited text file" you would have found many examples of how to do it without asking.
If everything was not true, would it be not true that everything is not true?
<font color="red">"Assembly.<br /> Ah, yes that dreaded thing that pulled itself out of the abyss. <br />-- Wait, assembly is not that bad. It just takes time to adjust to."</font>
|
|
|
|
|
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@partNumber",
I cant find a way to access a sql parameter from a dataset from the insertcommand. Is there a way through the partial class to access this information.
|
|
|
|
|
A DataSet is disconnected from the database. It has no knowledge of how it got its data or how the data potentially gets sent to the database, or even what database it comes from or goes to, or even if there is any database at all!
Man who stand on hill with mouth open wait long time for roast duck to drop in
|
|
|
|
|
How we can check folder read/write or full control permissions using VB6.0?
Thanks.
|
|
|
|
|
Are you trying to find out if a particular person has permissions before writing to a file or what?? Why are you doing this?? Maybe there is another way besides trying to get the ACL for a folder.
|
|
|
|
|
FileSystem.GetAttr("C:\here") = vbReadOnly
You don't get very much more.
Panic, Chaos, Destruction.
My work here is done.
|
|
|
|
|
hi
Previously I was using frmStart as my startup object and in Form_Load I was calling LinkExecute if my frmStart is already loaded.
Now I have changed my startup object and using Sub Main() to show or hide frmStart.
Problem is that now when I call LinkExecute in the frmStart Load the execution goes fine but Object gets unloaded automatically. I get Error '364'
After LinkExecute I have Unload Me command but control never reaches there.
please tell me how to avoid the "Object was unloaded" error.
Thanks.
|
|
|
|
|
I have no clue what you're talking about...
Is this a VB6 app or VB.NET?? What are you doing with "LinkExecute"?? on what object is it being called?? What's the complete error message you're getting??
|
|
|
|
|
please see following details:
public Sub Main()
If App.PrevInstance Then
If Command$ <> vbNullString Then
myform.HiddenText.Text = Command$
myform.HiddenText.LinkTopic = "MyApplication|SendCmd"
myform.HiddenText.LinkMode = vbLinkManual
myform.HiddenText.LinkExecute myform.HiddenText.Text
myform.HiddenText.LinkMode = vbLinkNone
End If
Unload myform
Exit Sub
Else
'perform some checks
End If
'pseudo code
If checks are not valid
show message and exit
else
if command$ has value
myform.show
else
myform.hide
end if
end if
Exit sub
End Sub
Now in this case i get "Timeout while waiting for DDE response".
Please reply.
modified on Monday, June 15, 2009 12:39 AM
|
|
|
|
|
I couldn't tell you. I haven't touched VB6 in over 8 years now. Sorry.
|
|
|
|
|
Hi CP,
i am using the custom font to hide the properties
Public Class MyCustomFont
Inherits FontConverter
Public Overrides Function GetPropertiesSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return False
End Function
End Class
Now i want to hide the Script : ComboBox which exists in the bottom of the FONT Dialog .
how can i implement in this code ??
Regards ,
|
|
|
|
|
I don't know if this is what you are looking for or not. This doesn't make the combobox disappear completely, but it gets rid of all of the choices except for the default.
Dim myFont As New FontDialog
myFont.AllowScriptChange = True
myFont.ShowDialog()
Hope that helps.
-Ray
|
|
|
|
|
Public Class MyCustomFont
Inherits FontConverter
Public Overrides Function GetPropertiesSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return False
End Function
End Class
<Category("Appearance")> <Description("The font used to display text in the control")> _
<TypeConverter(GetType(MyFont))> _
Public Property Font() As Font
Get
Return _Font
End Get
Set(ByVal Value As Font)
_Font = Value
End Set
End Property
I am showing the FONT in this way in the propertygrid . While showing the FONT Dialog then the Script Combobox should not be shown .
Regards
|
|
|
|
|
I am reading an excel sheet into datatable. in excel sheet one column has values like (70,1) instead of decimal "," is used as decimal seperator.
i want to change the "," into "." in the table without looping each row for that column. one way is to set the culture but that doesnt change the value of the data already in the table.
is there a way of changing the values of columns
|
|
|
|
|